SAR*_*H V 4 android android-recyclerview
滚动后回收器视图项目颜色更改重复。
我曾经在 Recyclerview 列表的特定位置更改颜色。当滚动发生时,底部的另一个项目有相同的变化。它正在重复。如何解决这个问题?
holder.recycle_Listing.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
itemListener.connectionClicked(v,position, itemtype);
holder.mainlayout.setBackgroundColor(Color.parseColor("#e927a4d1"));
}
});
Run Code Online (Sandbox Code Playgroud)
回收器视图回收 OnBindViewHolder 中的视图。所以当项目被点击时,它会反映在其他一些位置。解决这个问题。创建一个全局 SparseBooleanArray 来存储点击的位置。
private final SparseBooleanArray array=new SparseBooleanArray();
Run Code Online (Sandbox Code Playgroud)
然后在最终视图中添加 clickListener 和 onClick 存储被点击项目的位置。
public class ViewHolder extends RecyclerView.ViewHolder {
public YOURVIEW view;
public ViewHolder(View v) {
super(v);
view = (YOURVIEW) v.findViewById(R.id.YOURVIEWID);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
array.put(getAdapterPosition(),true);
notifyDataSetChanged();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
在 OnBindViewHolder 里面,
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
if(array.get(position)){
holder.mainlayout.setBackgroundColor(Color.parseColor("#e927a4d1"));
}else{
holder.mainlayout.setBackgroundColor(UNSELECTEDCOLOR);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3133 次 |
| 最近记录: |