2016-03-04 51 views
2

我改变的背景时,在我的列表视图中选择一些项目,但每次我向下滚动的时候,我失去了选择的项目列表视图 - 滚动输球后选定的项目下来

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); 
    } 
}); 

我如何才能让后台状态?

+1

请发布您的完整适配器类 –

+1

适配器在您滚动时重新使用它的视图。阅读关于它的信息,关于这个问题有很多问题和答案。 –

回答

4

您的意见正在回收。您需要跟踪其他地方的选定视图(如整数列表,您保留所选视图的位置)。

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

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

最好使用ListView的选择,而不是:

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

还是应该每次打电话view.setSelected在适配器getView。导致在查看被回收之后所选状态丢失。

相关问题