微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在recyclerview中只选择一项?

如何解决如何在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 举报,一经查实,本站将立刻删除。