当我点击Recyclerview中的项目时,每七个项目都会产生效果。
onBindViewHolder:
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.channelName.setText(list.get(position).getChannnelName());
holder.linearLayoutChannelName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.setBackgroundColor(Color.parseColor("#93bcff"));
}
});
}
public class ViewHolder extends RecyclerView.ViewHolder {
LinearLayout linearLayoutChannelName;
TextView channelName;
public ViewHolder(View itemView) {
super(itemView);
channelName = itemView.findViewById(R.id.tv_channel_name);
linearLayoutChannelName = itemView.findViewById(R.id.ll_channelname);
}
}
当我点击一个项目时,每七个项目都会更改其背景颜色,并且它会重复列表中的每七个项目,即使滚动列表,背景颜色也会消失。
答案 0 :(得分:0)
不要在onBindViewHolder中使用onClickListener,而是在onCreateViewHolder中设置它,并创建一个成员变量来设置所选项目。你可以这样做。
int mSelectedItemPosition = -1;
//在你的createViewHolder方法
中holder.linearLayoutChannelName.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
int position = holder.getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
mSelectedItemPosition = position;
notifyItemRangeChanged(0, yourList.size());
}
}
});
在绑定视图中,检查所选项目位置并设置背景颜色
if(mSelectedItemPosition == position){
view.setBackgroundColor(Color.parseColor("#yourColor"))
}else{
view.setBackgroundColor(Color.parseColor("originalColor"));
}