Fil*_*Jac 3 android colors android-recyclerview
我用a RecyclerView来显示一些文本数据.我在其中选择了不同的卡片.
我想改变所选卡片的外观.
public void toggleSelection(int pos)
{
RecyclerView.ViewHolder viewHolder = recView.findViewHolderForPosition(pos);
if (selectedItems.get(pos, false)) {
selectedItems.delete(pos);
viewHolder.itemView.setBackgroundColor(Color.WHITE);
}
else {
selectedItems.put(pos, true);
viewHolder.itemView.setBackgroundColor(Color.GREEN);
}
notifyItemChanged(pos);
}
Run Code Online (Sandbox Code Playgroud)
如果我像这样使用我的代码它是有效的.我的onClick事件触发此代码,我的卡背景颜色变为绿色.
所以这是我的问题:向下滚动显示其他卡片在相同的相对位置(但在列表中更下方),即使没有被选中,也会使用相同的背景颜色; 选择第一张卡并向下滚动到第八张卡是顶部可见卡的位置,显示第八张卡突出显示.
小智 6
您需要在onBindViewHolder()方法中明确设置颜色.
回收站视图的名称建议回收视图,因此第0项将被回收为您案例中的第8项.它们使用与使用该方法创建的相同视图持有者onCreateViewHolder().每当它们中的任何一个进入视图时,该onBindViewHolder()方法被调用.
我建议你在数据模型中创建一个额外的布尔字段,告诉你是否突出显示了视图.你应该切换它toggleSelection().然后在onBindViewHolder()你检查这个字段的值并相应地设置你的颜色.
| 归档时间: |
|
| 查看次数: |
6618 次 |
| 最近记录: |