如何在recyclerview中只选择一项?

问题描述

我制作了一个带有水平图像的 recyclerView。现在我想在一个项目周围得到一个边框,如果它被点击。如果您单击不同的项目,您首先选择的项目的边框应该消失,它应该出现在新选择的项目周围。此外,如果您再次单击同一项目,它应该被“取消选择”并且边框应该再次消失。我已经管理了最后一部分,但我无法弄清楚如何获取一个选定项目的边框并将其放在您最后单击的项目上。我添加一个变量 amountOfItemsSelected,并将其放入 if 语句中,但不知道该放入什么内容。这是我的适配器代码

package anotherChallenge.example.criminalactivity;

import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;

import com.example.criminalactivity.R;

import java.util.ArrayList;


public class CustomAdapterCardView extends RecyclerView.Adapter<CustomAdapterCardView.viewHolder>{

private Context context;
private ArrayList<Itemmodel> arrayList;
private RecyclerView mRecyclerView;
private int amountOfItemsSelected=0;
private int row_of_index = -1;

public CustomAdapterCardView(Context context,ArrayList<Itemmodel> arrayList) {
    this.context = context;
    this.arrayList = arrayList;
}

@Override
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
    mRecyclerView = recyclerView;

}

@NonNull
@Override
public CustomAdapterCardView.viewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
    View view = LayoutInflater.from(context).inflate(R.layout.items_in_imagelist,parent,false);
    return new viewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull CustomAdapterCardView.viewHolder viewHolder,int position) {
    viewHolder.icon.setimageResource(arrayList.get(position).getimage());
    viewHolder.cardView.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(viewHolder.cardView.isSelected() == false){
                viewHolder.cardView.setCardBackgroundColor(Color.parseColor("#43e6af"));
                viewHolder.cardView.setSelected(true);
                amountOfItemsSelected++;
            }
            else if(viewHolder.cardView.isSelected() == true){
                viewHolder.cardView.setCardBackgroundColor(Color.parseColor("#696969"));
                viewHolder.cardView.setSelected(false);
                amountOfItemsSelected--;
            }

            if (amountOfItemsSelected>1){

            }

            System.out.println(viewHolder.cardView.isSelected());
            System.out.println(amountOfItemsSelected);
        }
    });

}



@Override
public int getItemCount() {
    return arrayList.size();
}

public class viewHolder extends RecyclerView.ViewHolder {

    ImageView icon;
    CardView cardView;

    public viewHolder(View itemView) {
        super(itemView);
        icon = (ImageView) itemView.findViewById(R.id.imageInList);
        cardView = itemView.findViewById(R.id.cardview);

    }
}
}

这是我在 recyclerview 中的项目代码

package anotherChallenge.example.criminalactivity;

public class Itemmodel {

int image;
int id;

public int getimage() {
    return image;
}

public void setimage(int image) {
    this.image = image;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...