代码之家  ›  专栏  ›  技术社区  ›  ageektrapped

在Android中使用多个Select ListView实现全选

  •  0
  • ageektrapped  · 技术社区  · 13 年前

    我正在尝试在ListViewActivity中实现ListView的全选菜单项。我的ListViewActivity的相关部分:

    public class MyListViewActivity extends ListActivity
    {
    
    
       @Override
       protected void onCreate(Bundle savedInstanceState)
       {
          super.onCreate(savedInstanceState);
    
          ArrayList<String> data = createDataList();      
          setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, data));
          getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
          getListView().setItemsCanFocus(false);
       }
    
    
       @Override
       public boolean onMenuItemSelected(int featureId, MenuItem item)
       {
          if (item.getItemId() == R.id.delete)
          {
             //TODO: delete the checked items
             return true;
          }
          if (item.getItemId() == R.id.select_all)
          {
             for (int i = 0; i < getListView().getCount(); i++)
                getListView().setSelection(i);
             return true;
          }
          return super.onMenuItemSelected(featureId, item);
       }
    

    我浏览过stackoverflow.com和谷歌,上面的内容应该可以用。但事实并非如此。 setSelection(i) 似乎是我要在ListView上调用的方法,但它没有如广告所示工作。

    我做错什么了?在Android上,这在代码上是可能的吗?

    2 回复  |  直到 13 年前
        1
  •  3
  •   jwheron    12 年前

    我想你要找的功能是 setItemChecked .

        2
  •  4
  •   Eric    13 年前

    试试这个。

    ListView listview = getListView();
    if (item.getItemId() == R.id.select_all)
          {
             for (int i = 0; i < listview.getCount(); i++)
                listview.setItemChecked(i, true);
          }