Android 如何在listview中单击项目打开新活动?

Android 如何在listview中单击项目打开新活动?,android,android-listview,android-activity,onclicklistener,package-managers,Android,Android Listview,Android Activity,Onclicklistener,Package Managers,我无法在listview中的项目上单击以启动新活动。我希望onItemClick可以打开ApkInfoActivity。。实际上,当我点击时,什么也没有发生 protected void onItemClick(ListView l, View v, int position, long id, AdapterView<?> parent) { super.onListItemClick(l, v, position, id); final Appli

我无法在listview中的项目上单击以启动新活动。我希望
onItemClick
可以打开
ApkInfoActivity
。。实际上,当我点击时,什么也没有发生

protected void onItemClick(ListView l, View v, int position, long id, AdapterView<?> parent) {
        super.onListItemClick(l, v, position, id);

       final ApplicationInfo app = applist.get(position);

       PackageInfo packageInfo = (PackageInfo) parent.getItemAtPosition(position);

       AppDataActivity appData = (AppDataActivity) getApplicationContext();
       appData.setPackageInfo(packageInfo);

       Intent appInfo = new Intent(getApplicationContext(), ApkInfoActivity.class);
       startActivity(appInfo);

    }
为Listview添加setOnItemclickListener()


Intent-appInfo=newintent(CurrentActivity.this,ApkInfoActivity.class);

星触觉(appInfo)

尝试将方法标题的可见性从
受保护的
更改为
公共的

编辑

现在我来看一下,您的方法头实际上是错误的。它应该是以下内容:

public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id)
public-abstract-void-onItemClick(AdapterView父视图、视图视图、整型位置、长id)

变量的顺序必须与它们在所实现的接口中的顺序相同。

将其用于您的工作

 list.setOnItemClickListener(new AdapterView.onItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {
      Intent appInfo = new Intent(YourActivity.this, ApkInfoActivity.class);
       startActivity(appInfo);
   } 
});
list.setOnItemClickListener(新的AdapterView.onItemClickListener(){
@凌驾
public void onItemClick(适配器视图适配器、视图视图、整型位置、长参数){
Intent appInfo=新的Intent(YourActivity.this,ApkInfoActivity.class);
星触觉(appInfo);
} 
});
公共类MenuYangu扩展ListActivity{
字符串类[]={“小测验”、“签署新用户”、“好友列表”,
“下载文件”、“上传文件”、“选择Pdf文件”、“记忆游戏”,
“Dzidza数学”、“笔试”};
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setListAdapter(新阵列适配器)(Menuone.this,
android.R.layout.simple_list_item_1,class));
}
@凌驾
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id)
{
//TODO自动生成的方法存根
super.onListItemClick(左、右、位置、id);
如果(位置==0){
Intent Intent=新的Intent(this,QuizActivity.class);
星触觉(意向);
}
否则如果(位置==1){
Intent Intent=新的Intent(这个,SignUp.class);
星触觉(意向);
}
否则如果(位置==2){
Intent Intent=新Intent(这个,FriendList.class);
星触觉(意向);
} 
}
}
}

例如,如果您想根据在listview中单击的文本打开活动,即如果“abcd”是在listview上单击的选项,并且您想使用非常相同的名称“abcd”打开活动,则执行此操作

public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {

    String temp=yourarray[position];


    try{
        Class myclass=Class.forName("yourpackagename."+temp);
        Intent in=new Intent(this,myclass);
        startActivity(in);
        }catch(Exception e){

        }


}
public void onItemClick(AdapterView父视图、视图、int位置、,
长id){
String temp=yourarray[position];
试一试{
Class myclass=Class.forName(“yourpackagename.”+temp);
Intent in=新Intent(此,myclass);
星触觉(in);
}捕获(例外e){
}
}
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图适配器、视图视图、整型位置、长参数){
如果(位置==0){
Intent appInfo=新的Intent(SwahiliService.this,DisplayActivity.class);
星触觉(appInfo);
} 
如果(位置==1){
意向英语=新意向(SwahiliService.this,EnglishService.class);
星触觉(英语);
}
如果(位置==2){
Toast.makeText(getApplicationContext(),“您已选择pst3”,Toast.LENGTH_LONG.show();
}
}});

对我的答案进行解释。我假设您已经按照所发布代码的顺序设置了listview。我将仅回顾代码的这一部分: super.onListItemClick(左、右、位置、id); 我不认为这是必要的。 在我举的例子中:

lv.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {
      if(position==0){
     Intent appInfo = new Intent(SwahiliService.this, DisplayActivity.class);
      startActivity(appInfo);
  } 
      if(position==1){
          Intent english=new Intent(SwahiliService.this,EnglishService.class);
          startActivity(english);
      }
      if(position==2){
          Toast.makeText(getApplicationContext(),"You have selected pst3", Toast.LENGTH_LONG).show();
      }
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图适配器、视图视图、整型位置、长参数){
如果(位置==0){
Intent appInfo=新的Intent(SwahiliService.this,DisplayActivity.class);
星触觉(appInfo);
} 
如果(位置==1){
意向英语=新意向(SwahiliService.this,EnglishService.class);
星触觉(英语);
}
如果(位置==2){
Toast.makeText(getApplicationContext(),“您已选择pst3”,Toast.LENGTH_LONG.show();
}
我正在为我的listview设置一个lister,我称之为lv, my adapter(我的listview项的持有者)设置三个变量,一个视图,int表示位置,long表示参数:, 我引用了listview上通过其位置选择的项,该位置通常从0开始(尽管您可以根据需要实例化它以任何其他数字开始,例如,g int position=1,从1开始项目计数)。 从这里,您可以使用任何控件结构根据单击的项启动活动,在我的例子中,我使用了for循环,因为我假设我的listview只有三个项,对于较大的listview项,您可以使用for循环。 请注意,我是如何开始我的新活动的,首先引用当前活动(SwahiliService.this),如下所示(SwahiliService.this),其中的活动可以安全地替换为(仅此关键字),然后遵循我想要开始的活动。
我希望这现在更详细。

您需要使用Intent,还可以将单击的listview项目数据传递给新的活动

String classes[] = { "Quiz Trivia", "Sign A New User", "Friend List",
"Download A File", "Upload A File", "Select Pdf files", "Memory Game",
"Dzidza Maths", "Write Exam" };

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {                   
Intent intent = new Intent(getApplicationContext(),ApkInfoActivity.class);
                intent.putExtra("name",classes[i]);
                startActivity(intent);


        }
    });

}
String classes[]={“小测验”、“签署新用户”、“好友列表”,
“下载文件”、“上传文件”、“选择Pdf文件”、“记忆游戏”,
“Dzidza数学”、“笔试”};
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView,View视图,int i,long l){
Intent Intent=new Intent(getApplicationContext(),ApkInfoActivity.class);
意向。额外(“名称”,类别[i]);
星触觉(意向);
}
});
}
输出:


您可以找到整个教程

//添加ArrayList和ArrayAdapter:

    final ArrayList<String> listItems = new ArrayList<String>();
        listItems.add("image_one");
        listItems.add("image_two");
        listItems.add("image_three");

    ArrayAdapter<String> myArrayAdapter = new ArrayAdapter<>(this, 
        android.R.layout.simple_list_item_1, listItems);
        myListView.setAdapter(myArrayAdapter);
final ArrayList list items=new ArrayList();
列表项。添加(“图像_one”);
添加(“图像二”);
添加(“图像三”);
啊
lv.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {
      if(position==0){
     Intent appInfo = new Intent(SwahiliService.this, DisplayActivity.class);
      startActivity(appInfo);
  } 
      if(position==1){
          Intent english=new Intent(SwahiliService.this,EnglishService.class);
          startActivity(english);
      }
      if(position==2){
          Toast.makeText(getApplicationContext(),"You have selected pst3", Toast.LENGTH_LONG).show();
      }
String classes[] = { "Quiz Trivia", "Sign A New User", "Friend List",
"Download A File", "Upload A File", "Select Pdf files", "Memory Game",
"Dzidza Maths", "Write Exam" };

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {                   
Intent intent = new Intent(getApplicationContext(),ApkInfoActivity.class);
                intent.putExtra("name",classes[i]);
                startActivity(intent);


        }
    });

}
    final ArrayList<String> listItems = new ArrayList<String>();
        listItems.add("image_one");
        listItems.add("image_two");
        listItems.add("image_three");

    ArrayAdapter<String> myArrayAdapter = new ArrayAdapter<>(this, 
        android.R.layout.simple_list_item_1, listItems);
        myListView.setAdapter(myArrayAdapter);
    final ArrayList<Class> intents = new ArrayList<Class>();
        intents.add(image_one.class);
        intents.add(image_two.class);
        intents.add(image_three.class);
    myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int 
        position, long id) {

            Intent listIntent = new Intent(getApplicationContext(), 
            intents.get(position)); 
            startActivity(listIntent);
        }
    });