ListView的新活动

时间:2015-02-22 14:16:09

标签: java android arrays android-activity android-studio

我正在制作一个音乐表应用,并在ListView中收录了一堆歌曲。

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

歌曲数组为uta[],因此我可以找到具有uta[position]的特定字符串,但如何根据用户在{中选择的位置 - 打开特定活动{1}}?

4 个答案:

答案 0 :(得分:2)

您可以在使用uta[position]

获取的String上创建一个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

答案 1 :(得分:0)

在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);
     } 

答案 2 :(得分:0)

您的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
    }
});

此外,您可以将歌曲传递给一个根据歌曲数据加载自身的活动。为此,我建议您阅读Parcelable界面以及如何将额外内容放入Intent

答案 3 :(得分:0)

你能用:

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...
      } 
});

干杯!