listViewFoods.setAdapter(adapter); listViewFoods.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String title = list.get(position).get("title").toString(); Intent npg=new Intent(MainActivity.this,MainActivity2.class); startActivities(new Intent[]{npg}); Toast.makeText(MainActivity.this,title,Toast.LENGTH_LONG).show(); }这是什么意思
时间: 2023-06-08 13:04:19 浏览: 56
这是一个 Android 应用程序中的代码片段,它展示了一个 ListView 控件的设置和设置 Item 点击事件的处理。具体来说,ListViewFoods 是一个 ListView 控件,adapter 是它的 Adapter,用于填充列表项。当用户点击列表项时,该代码片段会获取该项的标题,创建一个新的 Activity(即 MainActivity2),并显示该项的标题。
相关问题
以下代码,在选择项点击后,后面的选择框不变化,请问为什么ListView listView = view1.findViewById(android.R.id.list); ArrayAdapter<String> adapter = new ArrayAdapter<>(LuzhiAdmin_Xiangmu_Big_Add.this, android.R.layout.simple_list_item_multiple_choice, finalXx); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { // Handle item click event per_gangwei = ""; jg.add(finalXx[i]); } });
这段代码中,ListView 的 Adapter 使用的是 ArrayAdapter,该 Adapter 的布局文件是 android.R.layout.simple_list_item_multiple_choice,这个布局文件中只有一个 CheckedTextView 控件,这个控件默认是不会改变 CheckBox 状态的。
要让 CheckBox 状态随着点击改变,需要在 Adapter 中重写 getView 方法,手动设置 CheckedTextView 的状态。可以参考以下代码:
```java
ArrayAdapter<String> adapter = new ArrayAdapter<String>(LuzhiAdmin_Xiangmu_Big_Add.this, android.R.layout.simple_list_item_multiple_choice, finalXx) {
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View view = super.getView(position, convertView, parent);
CheckedTextView checkedTextView = view.findViewById(android.R.id.text1);
checkedTextView.setChecked(listView.isItemChecked(position));
return view;
}
};
```
这样就可以根据 ListView 的状态改变 CheckBox 的状态了。
simple_adapter_lv.setAdapter(simpleAdapter); simple_adapter_lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (position==0){ mediaPlayer.create(Main3Activity.this, R.raw.music2).start();} else if (position==1){ mediaPlayer.create(Main3Activity.this, R.raw.music2).start();} else if (position==2){ mediaPlayer.create(Main3Activity.this, R.raw.music3).start();} else if (position==3){ mediaPlayer.create(Main3Activity.this, R.raw.music4).start();} //soundPool.play(music[position],1,1,0,0,1); } });如何从这段代码中拿到正在播放的MediaPlayer
你可以在创建MediaPlayer对象时,将其赋值给一个变量。然后在onItemClick方法中,根据position的值确定当前播放的音乐,并通过MediaPlayer对象的isPlaying()方法判断当前是否正在播放音乐。如果正在播放,就把这个MediaPlayer对象返回。
示例代码:
```
// 在Activity中定义一个成员变量
private MediaPlayer mediaPlayer;
// 在创建MediaPlayer时,赋值给成员变量
mediaPlayer = MediaPlayer.create(Main3Activity.this, R.raw.music2);
// 在onItemClick方法中判断当前是否正在播放音乐,并返回MediaPlayer对象
simple_adapter_lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == 0) {
if (mediaPlayer.isPlaying()) {
return mediaPlayer;
} else {
mediaPlayer = MediaPlayer.create(Main3Activity.this, R.raw.music2);
mediaPlayer.start();
}
} else if (position == 1) {
// ...
}
}
});
```
需要注意的是,如果当前MediaPlayer对象没有在播放,需要重新创建并启动它。否则返回的MediaPlayer对象会是一个已经停止播放的对象。