gpt4 book ai didi

android - RecyclerView ambiguos setVisibility函数,点击一个 View 影响多个 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:13 28 4
gpt4 key购买 nike

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),而不是文本变化。我该如何阻止它?

enter image description here

enter image description here

我已经尝试解决这个问题很长时间了,如果我的问题不清楚,请下载项目并尝试执行代码以理解我的确切意思。

最佳答案

只需在您的适配器类中的 getItemCount 方法之后添加一个方法

@Override
public int getItemViewType(int position) {
return position;
}

解决问题

关于android - RecyclerView ambiguos setVisibility函数,点击一个 View 影响多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584141/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com