我正在制作一个音乐表应用,并在ListView
中收录了一堆歌曲。
我正在使用onItemClick
方法,但问题是,我不知道如何根据选择的子项打开活动。
歌曲数组为uta[]
,因此我可以找到具有uta[position]
的特定字符串,但如何根据用户在{中选择的位置 - 打开特定活动{1}}?
答案 0 :(得分:2)
您可以在使用uta[position]
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...
}
});
干杯!