android - 将交替的 onClickListener 设置为 Recyclerview 项目

标签 android android-recyclerview onclicklistener

当我点击项目时,我有 50 个 recyclerview 项目现在是绿色的 它变成红色,当我再次点击时它又变回绿色下面是如何实现它的代码

public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {

    if (holder instanceof ItemViewHolder) {
        ((ItemViewHolder)holder).Title.setText(position+1+"");
        ((ItemViewHolder)holder).imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (status==0){
                    status=1;
                    ((ItemViewHolder) holder).imageView.setImageResource(R.drawable.ic_social_person);//red icon
                }else {
                    status=0;
                    ((ItemViewHolder) holder).imageView.setImageResource(R.drawable.ic_social_person_green);//green icon
                }

            }
        });


    } else {
        ((progressHolder) holder).progressBar.setIndeterminate(true);
    }


}

现在的问题是,当我点击第一个项目时它变成红色图标但是当我点击第二个项目时它没有变成红色图标当我再次点击它时它变成红色图标如何解决这个问题

最佳答案

 public SparseBooleanArray array = new SparseBooleanArray();
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {

        if (holder instanceof ItemViewHolder) {
            ((ItemViewHolder)holder).Title.setText(position+1+"");
            ((ItemViewHolder)holder).imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    boolean status = array.get(position);
                    if (!status){
                        array.put(position,!status);
                        ((ItemViewHolder) holder).imageView.setImageResource(R.drawable.ic_social_person);//red icon
                    }else {
                        array.put(position,!status);
                        ((ItemViewHolder) holder).imageView.setImageResource(R.drawable.ic_social_person_green);//green icon
                    }

                }
            });


        } else {
            ((progressHolder) holder).progressBar.setIndeterminate(true);
        }


    }

关于android - 将交替的 onClickListener 设置为 Recyclerview 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34471827/

相关文章:

android: RecyclerView 在 ScrollView 里面

java - 从网站打开 Android 应用程序不起作用

java - 将 Object 转换为泛型类型时未引发无效的 ClassCast 异常

android - 如何在android中将布局的宽度和高度设置为百分比?

javascript - 脚本在我本地调用函数之前加载它,但在公开之后加载它

Android setOnItemClickListener 与 setOnClickListener

javascript - 如何获取引用号(链接形式)以使用javascript在另一个html页面中自动填写表格的一部分

javascript - 在 PhoneGap 中显示 facebook 用户图像 (Android)

android - 没有额外空间的项目

Android:在 Adapter (RecyclerView) 中手动清除 Glide 是一种好习惯吗?