我在列表视图中选择某个项目后会更改背景,但每次向下滚动时,我都会丢失所选项目
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);
}
});
如何保持背景状态?
答案 0 :(得分:4)
您的观点正在被回收。您需要在其他位置跟踪所选视图(如整数列表,您可以保留所选视图的位置)。
然后,在适配器的getView中,根据列表中是否包含位置来设置所选的声明。
public View getView(int position, View convertView, ViewGroup parent) {
...
view.setSelected(mSelected.contains(position));
...
}
答案 1 :(得分:0)
最好改为使用listView选项:
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setItemChecked(itemPosition, true);
或者每次都应该在适配器getView中调用view.setSelected
。导致视图被回收后,所选状态将丢失。