这是项目 https://github.com/kiddBubu/RecyclerViewDemo我正在努力奔跑。这是我来自 RecyclerView.Adapter 类的 onBindViewHolder 的代码
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
TextView title = (TextView) holder.view.findViewById(R.id.title);
final TextView desc = (TextView) holder.view.findViewById(R.id.desc);
final ImageView imageView = (ImageView) holder.view.findViewById(R.id.imageView);
title.setText(pojos.get(position).getTitle());
desc.setText(pojos.get(position).getDesc());
imageView.setImageResource(pojos.get(position).getImage());
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
desc.setText("clicked");
desc.setBackgroundColor(Color.BLUE);
imageView.setImageResource(R.drawable.heart_red);
}
});
}
列表加载正常,当调用 imageView 的 onclicklistener 时会出现问题。
desc.setText("clicked");
上面的行对单击它的列表项进行了更改。但
desc.setBackgroundColor(Color.BLUE);
当执行此行时,更改会反映在列表中的多个项目中。出了什么问题?在下图中,我单击了项目 0,文本更改为“已单击”并且颜色已设置。但是当我向下滚动时,项目 12 也受到了我对项目 0 的单击的影响。仅反映了背景颜色的变化,而不反映了文本的变化。我该如何阻止这个?
我已经尝试解决这个问题很长时间了,如果我的问题不清楚,请下载该项目并尝试执行代码以理解我的确切含义。
只需在适配器类中的 getItemCount 方法之后添加一个方法
@Override
public int getItemViewType(int position) {
return position;
}
它会解决问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)