【发布时间】:2012-08-21 18:07:11
【问题描述】:
我正在开发一个应用程序,我有一个ListActivity,它的选择模式设置为choice_mode_multiple。现在我想重写方法,当一个项目被选中/取消选中时调用,我发现onCheckChanged() 方法仅针对RadioGroup 和复合Button 实现。如何在ListActivity 中覆盖这样的内容?还是我必须实现自己的Adapter?谢谢
【问题讨论】:
我正在开发一个应用程序,我有一个ListActivity,它的选择模式设置为choice_mode_multiple。现在我想重写方法,当一个项目被选中/取消选中时调用,我发现onCheckChanged() 方法仅针对RadioGroup 和复合Button 实现。如何在ListActivity 中覆盖这样的内容?还是我必须实现自己的Adapter?谢谢
【问题讨论】:
设置 onlistitemclick 监听器为 listview ,然后在 itemclick 方法中获取 mylistView.getCheckedItemCount() ,编写要执行的操作的代码。
如果不清楚,请告诉我您在检查项目时要实现什么。
mylistView = (ListView)customView.findViewById(R.id.mylist);
mylistView.setAdapter(mFolderAdapter);
mylistView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mylistView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v,
int arg2, long arg3) {
// TODO Auto-generated method stub
if(mylistView.isItemChecked(arg2)){
//Dooperation
}
// or
if(mylistView.getCheckedItemCount()>1){
//Dooperation
}
}
});
【讨论】:
如果您使用标准数组适配器和 SINGLE 或 MULTIPLE 选择模式,请使用 isItemChecked (int position) 或 setItemChecked(int position, boolean value)。 http://developer.android.com/reference/android/widget/AbsListView.html#isItemChecked(int)
您还可以创建自定义适配器并使用可以容纳 onClickListener 和 CheckedChangedListener 的复选框来扩展行布局。 使用搜索查找示例。
【讨论】: