我想在列表视图中选择用户检查的项目。我已将listview设置为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();
}
});
我还想记住选中的项目,并在列表打开时将其显示为已选中。
答案 0 :(得分:0)
您必须在适配器中使用notifyDataSetChanged()方法。这将更新SparseBooleanArray。现在您检查并取消选中项目,支持数据结构不知道您在做什么。您可以通过adapter.notifyDataSetChanged()通过适配器调用它,或者您可以覆盖适配器类中的方法并直接调用它。