This is the project我想跑。这是我在 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);
执行此行时,更改会反射(reflect)在列表中的多个项目中。出了什么问题?在下面显示的图片中,我单击了项目 0,文本更改为“已单击”并设置了颜色。但是当我向下滚动时,第 12 项也受到我点击第 0 项的影响。只有背景颜色变化得到反射(reflect),而不是文本变化。我该如何阻止它?
我已经尝试解决这个问题很长时间了,如果我的问题不清楚,请下载项目并尝试执行代码以理解我的确切意思。
最佳答案
只需在您的适配器类中的 getItemCount 方法之后添加一个方法
@Override
public int getItemViewType(int position) {
return position;
}
解决问题
关于android - RecyclerView ambiguos setVisibility函数,点击一个 View 影响多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584141/