多次更改 RecyclerView 中所选项目的 ImageView

问题描述 投票:0回答:0

我正在尝试更改 RecyclerView 中的 ImageView。每次单击 RecyclerView 时,我都需要更改 ImageView。所以,当我点击它时,它变成了一个勾号,然后我再次点击它,它又变成了开始的样子,当我再次点击它时,我想像我第一次按下它时那样调出勾号。

public class RecyclerViewAdapter1 extends RecyclerView.Adapter<RecyclerViewAdapter1.ViewHolder> {

    private LayoutInflater inflater;
    private FragmentCommunication mCommunicator;
    private static String LOG_TAG = "MyRecyclerViewAdapter";

    private ArrayList<String> arrayList; 
    private ArrayList<Integer> IDList; 
    private ArrayList<Integer> polikhusus;
    
    private int tekan = 0;
    private GlobalClass globalVariable;

    private static int lastClickedPosition = -1;// Variable to store the last clicked item position

    RecyclerViewAdapter1(ArrayList<String> pintuMasuk, ArrayList<Integer> PoliID, ArrayList<Integer> poli, OnTextClickListener listener) {
        this.arrayList = pintuMasuk;
        this.IDList = PoliID;
        this.polikhusus = poli;
        this.mListener = listener;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View V = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_poli_design, parent, false);
        ViewHolder VH = new ViewHolder(V);
        return VH;
        }

    
    public class ViewHolder extends RecyclerView.ViewHolder {

        private TextView PintuMasuk;
        private ImageView Meme2;
        private RelativeLayout ItemList3;
        private int selectedIndex;
        private Integer PoliID;
       

        public ViewHolder(View itemView) {
            super(itemView);
          
            PintuMasuk = itemView.findViewById(R.id.poli);
            Meme2 = itemView.findViewById(R.id.gbpoli);
            ItemList3 = itemView.findViewById(R.id.item_list3);
        }
    }


    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        
        final String PintuMasuk = arrayList.get(position);
        final Integer PoliID = IDList.get(position);
        final Integer poli = polikhusus.get(position);
       
        holder.PintuMasuk.setText(PintuMasuk);
        holder.ItemList3.setTag(position);
        holder.Meme2.setImageResource(R.drawable.pintumasuk);

        holder.ItemList3.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                globalVariable = (GlobalClass) view.getContext().getApplicationContext();
                globalVariable.PoliID = PoliID;

                if(position != lastClickedPosition){
                    holder.Meme2.setImageResource(R.drawable.policheck);
                    Snackbar.make(view, "Anda memilih : "+PoliID+" "+PintuMasuk, Snackbar.LENGTH_SHORT).show();
                    Log.i(LOG_TAG," Clicked on Item " + position);

                }else {
                    // for cancel
                    Snackbar.make(view, "Anda membatalkan pilihan Anda", Snackbar.LENGTH_SHORT).show();
                    globalVariable.PoliID = 0;
                }

                if (lastClickedPosition != -1)
                    notifyItemChanged(lastClickedPosition);
                lastClickedPosition = position;
            }
        });
    }

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

enter image description here

java android android-recyclerview imageview
© www.soinside.com 2019 - 2024. All rights reserved.