来自 ListView 的新 Activity

New Activity from ListView

我正在开发音乐 sheet 应用程序,ListView 中有很多歌曲。

我正在使用 onItemClick 方法,但问题是,我不知道如何根据选择的子项目打开 activity。

歌曲数组是 uta[],所以我可以用 uta[position] 找到特定的字符串,但是如何根据选择的位置打开特定的 activity由用户在 ListView?

在您的 onitemclick 方法中以这种方式尝试

    if (position == 0) { 
    Intent intent = new Intent(this, activity1.class);
     startActivity(intent); 
    } else if (position == 1) { 
    Intent intent = new Intent(this, activity2.class);
     startActivity(intent); 
    } else if (position == 2){
     Intent intent = new Intent(this, activity3.class);
 startActivity(intent);
     } 

您可以对使用 uta[position]

获取的字符串进行 switch/case 声明
public void onItemClick(AdapterView parent, View v, int position, long id) {
    String value = uta[position].getValue();
    switch(value){
        case "value1":
            Intent intent = new Intent(this, activity1.class); startActivity(intent);
        break;

        case "value2":
            Intent intent = new Intent(this, activity2.class); startActivity(intent);
        break;

        case "value3":
            Intent intent = new Intent(this, activity3.class); startActivity(intent);
        break;
    }
}

注意:switch/case 对字符串的声明需要JDK 7,参见Oracle documentation

您的 ListView 项目点击侦听器提供已被点击的视图:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Song song = (Song) getItemAtPosition(position);
        if (song.getId() == SOME_ID)
            startActivity(new Intent(this, SomeActivity.class));
        // you can then create the logic for all your activities
    }
});

此外,您可以将歌曲传递给一个 activity,它会根据歌曲数据自行加载。为此,我建议您阅读 Parcelable 界面以及如何将 Extras 放入 Intent.

你可以使用:

listView1.setOnItemClickListener(new AdapterView.onItemClickListener() {
   @Override
   public void onItemClick(AdapterView adapter, View view, int position, long arg) {

      switch (position) {
          case 0:
              startActivity(new Intent(this, first_activity.class));
              break;
          case 1:
              startActivity(new Intent(this, second_activity.class));
              break;
         // and more...
      } 
});

干杯!