【发布时间】:2012-01-19 10:15:37
【问题描述】:
我想选择用户在列表视图中检查的项目。我已将列表视图设置为 CHOICE_MODE_MULTIPLE,它向我显示了可以进行多项选择的列表。但是如何获得检查的项目?我尝试使用: SparseBooleanArray sp= lv.getCheckedItemPositions(); 存储选中的项目很好,但是当任何选中的项目未选中时,它不会更新数组;它显示了检查现在未选中项目的先前数据。 有办法吗?? 这是我的代码:
final ListView lv = new ListView(getApplicationContext());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice,arrayList);
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?>
myAdapter, View myView, int myItemInt, long mylng){
SparseBooleanArray sp= lv.getCheckedItemPositions();
String str="";
for(int i=0;i<sp.size();i++)
{
str+=arrayList.get(sp.keyAt(i))+",";
}
Toast.makeText(getApplicationContext(),
"You selected: "+str,
Toast.LENGTH_LONG).show();
}
});
我还想记住选中的项目,并在打开列表时将其显示为选中。
【问题讨论】:
-
IMO if (sp.valueAt(i)) processCheckedItem(sp.keyAt(i));
-
processCheckedItem() 属于哪个类?我不能称之为公正。需要通过对象来调用。
-
processCheckedItem 是示例自定义函数。你可以做任何事情。 afaik 在这种情况下,“keyAt”返回(未)选中的项目位置,“valueAt”返回是否选中了“keyAt”处的项目。
标签: android list listview onclick android-listview