【问题标题】:List View with multiple items select and deselect具有多个项目的列表视图选择和取消选择
【发布时间】:2014-01-23 12:17:41
【问题描述】:

我有一个包含多个项目的列表视图,我需要在其中选择和取消选择列表项目,并删除选定的项目。

所以我查看了以下链接中的示例,但它是针对android:minSdkVersion="11" 但我正在研究 minSdkVersion="10"。

链接:http://www.androidbegin.com/tutorial/android-delete-multiple-selected-items-listview-tutorial/

是的,我们可以使用选中的文本视图、复选框和单选按钮,但要求就像我不能使用那样。

还有其他方法可以实现吗?

【问题讨论】:

  • 请先告诉你的要求。我们猜不出你需要什么?
  • @sush 我需要一个列表项,如该链接中给出的那样选择和取消选择,
  • 那就只用那个教程吧。为什么在这里?
  • 试试list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
  • @sush 正如我之前所说的,它适用于 android:minSdkVersion="11" 但我正在研究 minSdkVersion="10"。

标签: android listview select android-listview


【解决方案1】:

制作自定义列表适配器并获得每个视图的点击并在适配器中维护标志。如果标志为真,则表示已选择项目,否则取消选择项目,据此您可以更改项目视图,例如禁用该特定项目或显示一些复选框。

【讨论】:

    【解决方案2】:

    我所做的是创建一个 ArrayList 来存储所选项目的所有位置,并在点击时切换背景颜色。

    在我的适配器中我定义:

    public ArrayList<Integer> selectedIds = new ArrayList<Integer>();
    

    使用以下方法:

    public void toggleSelected(Integer position)
    {
        if(selectedIds.contains(position))
        {
            selectedIds.remove(position);
    
    
        }
        else
        {
            selectedIds.add(position);
        }
    }
    

    从 ArrayList 中添加\删除项目

    在我的 getView 方法中:

        if (selectedIds.contains(position)) {
            convertView.setSelected(true);
            convertView.setPressed(true);
            convertView.setBackgroundColor(Color.parseColor("#FF9912"));
        }
        else
        {
            convertView.setSelected(false);
            convertView.setPressed(false);
            convertView.setBackgroundColor(Color.parseColor("#000000"));
        }
    

    这会检查位置是否存储在 ArrayList 中。如果是这样,请将其绘制为选定的。如果不是,则相反。

    剩下的就是 OnItemClick 监听器,我添加了:

    ((YourAdapter)list.getAdapter()).toggleSelected(new Integer(position));
    

    当 YourAdapter 是你的 ListView 的适配器时

    希望这对任何人都有帮助,因为这是一个通用的答案:)

    感谢 eric.itzhakHow to change background color of selected items in ListView?

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多