Прослушиватель Onclick В Представлении Recycler Должен открывать Различные действия

#java #android #android-recyclerview #adapter #onclicklistener

Вопрос:

Это мой класс адаптера, который содержит мой прослушиватель onClick, где я хочу, чтобы он открывал различные действия в зависимости от элемента, щелкнутого в представлении переработчика. Кажется, я не могу реализовать метод, который бы справился с этой задачей.

  //DATA BOUND TO VIEWS
        @Override
        public void onBindViewHolder(MyHolder holder, int position) {
    
            //BIND DATA
            holder.ProductCategory.setText(products.get(position).getProductCategory());
            holder.ProductImage.setImageResource(products.get(position).getProductImage());
    
            //IMPLEMENT CLICK LISTENER
            holder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onItemClick(View v, int pos) {
                    
                //i get errors when i try to implement in this method
    
                }
            });
    
        }
 

Ответ №1:

Вы можете установить прослушиватель щелчков в itemView свой класс держателя следующим образом :

         holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Place your logic to open diffrent activity based on holder.getAdapterPosition()
            }
        });
 

И поместите логику открытия вашей активности в метод onClick (). используется holder.getAdapterPosition() для позиционирования текущего вида

Ответ №2:

На самом деле, я решил проблему, просто добавив операторы «если еще», которые указывали, какое действие следует предпринять, когда элемент в представлении переработчика щелкает на основе его позиции в списке.

 //DATA BOUND TO VIEWS
    @Override
    public void onBindViewHolder(MyHolder holder, int position) {

        //BIND DATA
        holder.ProductCategory.setText(products.get(position).getProductCategory());
        holder.ProductImage.setImageResource(products.get(position).getProductImage());

        //IMPLEMENT CLICK LISTENER


        holder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(View v, int pos) {


                // this is the solution
                if(position == 0){
                    //first item clicked
                    Intent intent = new Intent(c, CartWeb.class);// what happens when an 
                                                                 // item is clicked
                    c.startActivity(intent);

                }else if(position == 1){
                    //second item clicked
                    Intent intent = new Intent(c,Options.class);
                    c.startActivity(intent);

                }

            }
        });
 

Ответ №3:

внедрите прослушиватель щелчков в onCreateVHolder

 itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION) {
                        // here implement which you want onItem click
                    }
            }
        });