从多选ListView中选择项目 - android

时间:2012-01-19 10:15:38

标签: android list listview onclick android-listview

我想在列表视图中选择用户检查的项目。我已将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();
          }                 
    });

我还想记住选中的项目,并在列表打开时将其显示为已选中。

1 个答案:

答案 0 :(得分:0)

您必须在适配器中使用notifyDataSetChanged()方法。这将更新SparseBooleanArray。现在您检查并取消选中项目,支持数据结构不知道您在做什么。您可以通过adapter.notifyDataSetChanged()通过适配器调用它,或者您可以覆盖适配器类中的方法并直接调用它。