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

标签 android listview textview android-imageview android-recyclerview

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/

相关文章:

javascript - 如何使用同一行中的按钮从 ListView 行中选择项目?

Android ListView onScroll 触发多次

ios - 更新 NSLinguisticTagSchemeLanguage

Android:两次调用 textview.setBackgroundResource 会改变 textview 的大小

sql - Android:获取列中的最高值

android - 将两个 apk bundle 到一个 apk 中?

android - 登录成功后如何打开新 Activity -android应用

android - 如何查找 Android 设备是否具有音频功能?

Android - 将所有数据库条目读取到 listView

android - ScrollView 不显示内容