【问题标题】:Listview - losing selected items after scroll downListview - 向下滚动后丢失所选项目
【发布时间】:2016-03-04 16:04:01
【问题描述】:

当我在列表视图中选择某些项目时,我正在更改背景,但每次向下滚动时,我都会丢失所选项目

selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@android:color/darker_gray" android:state_selected="true"/>
</selector>

适配器

holder.cardView.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    boolean selected = v.isSelected();
    v.setSelected(!selected);
  }
});

如何保持后台状态?

【问题讨论】:

  • 请发布您的完整适配器类
  • 适配器在您滚动时重用它的视图。阅读它,在 SO 上有很多关于此的问题和答案。

标签: android listview


【解决方案1】:

您的观点正在被回收。您需要在别处跟踪所选视图(例如整数列表,您可以在其中保存所选视图的位置)。

然后,在您的适配器中,在 getView 中,您根据您的列表是否包含该位置来设置选定的声明。

public View getView(int position, View convertView, ViewGroup parent) {
     ...
     view.setSelected(mSelected.contains(position));
     ...
}

【讨论】:

    【解决方案2】:

    最好使用 listView 选择:

    listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    listView.setItemChecked(itemPosition, true);
    

    或者你应该每次都在你的适配器 getView 中调用view.setSelected。导致视图被回收后选中状态丢失。

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      • 2015-01-20
      • 2020-12-30
      • 1970-01-01
      相关资源
      最近更新 更多