来自 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...
}
});
干杯!
我正在开发音乐 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]
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...
}
});
干杯!