【问题标题】:Android Select multiple items in listviewAndroid 在列表视图中选择多个项目
【发布时间】:2014-06-22 16:54:17
【问题描述】:

我正在尝试实现多个列表项选择,用户可以根据操作栏上出现的菜单项执行操作。

我尝试了ListView.CHOICE_MODE_MULTIPLE_MODAL 的方法,但此选项仅适用于 API 11 或更高版本。

有没有一种方法可以为下面的 API 11 使用相同的技术,即下面的代码仅适用于 API 11 及以上版本。

list.setMultiChoiceModeListener(new MultiChoiceModeListener() {

            @Override
            public void onItemCheckedStateChanged(ActionMode mode,
                    int position, long id, boolean checked) {
                // Capture total checked items
                final int checkedCount = list.getCheckedItemCount();
                // Set the CAB title according to total checked items
                mode.setTitle(checkedCount + " Selected");
                // Calls toggleSelection method from ListViewAdapter Class
                listviewadapter.toggleSelection(position);
            }

【问题讨论】:

    标签: android listview android-listview menubar


    【解决方案1】:

    如果您想支持 API 级别

    一种解决方法是使用 onItemClickListener。

    列表设置:

    listView = (ListView) timeline.findViewById(android.R.id.list);
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    listView.setItemsCanFocus(false);
    listView.setAdapter(new ListAdapter(getActivity(), R.layout.cleaning_list_item, items));
    

    ListFragment 或 ListActivity 的监听器:

    @Override
      public void onListItemClick(ListView l, View v, int position, long id) {
    SparseBooleanArray checked = listView.getCheckedItemPositions();
    boolean hasCheckedElement = false;
    for (int i = 0; i < checked.size() && !hasCheckedElement; i++) {
        hasCheckedElement = checked.valueAt(i);
    }
    
    if (hasCheckedElement) {
        if (mMode == null) {
            mMode = ((SherlockFragmentActivity) getActivity()).startActionMode(new MyActionMode());
            mMode.invalidate();
        } else {
            mMode.invalidate();
        }
    } else {
        if (mMode != null) {
            mMode.finish();
        }
    }
    }
    

    其中 MyActionMode 是 ActionMode.Callback 的实现:

    private final class MyActionMode implements ActionMode.Callback { /* ... */ }
    

    【讨论】:

    • 嗨,我试过你的技术,在我的选择中没有得到保留,但我可以看到带有上下文菜单的操作栏。如何在项目上保留蓝色选择?感谢您的帮助
    • 只要去链接你就会明白一切...stackoverflow.com/questions/14737519/…
    • 如果你觉得有用别忘了打勾..:P
    • 完成 :),非常感谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 2012-04-04
    • 2021-02-13
    相关资源
    最近更新 更多