passing values from recycler adapter to fragment in android

后端 未结 4 2045
深忆病人
深忆病人 2020-12-19 17:14

I\'ve a recycler adapter where I\'ve added setOnClickListener for items in adapter. Code is as given below:

@Override
    public void onBindVi         


        
4条回答
  •  失恋的感觉
    2020-12-19 17:32

    Please use an interface like below, pass it in the adapter's constructor, and than use it in your activity / Fragment

       public MyAdapter(Context context, List data, MyAdapterListener myAdapterListener) {
                 this.context = context;
                 this.data = data;
                  this.myAdapterListener = myAdapterListener;
            }
    
            public interface MyAdapterListener {
    
        void onContainerClick(View view, int position); 
        }
    
         }
    
        public class ViewHolderItem extends RecyclerView.ViewHolder implements View.OnClickListener {
            public LinearLayout container;
    
            public ImageView poster;
    
            public ViewHolderItem(View v) {
                super(v);
    
                container = (LinearLayout) v.findViewById(R.id.container);
    
                poster = (ImageView) v.findViewById(R.id.poster);
    
                container =setOnClickListener(this); /// this line must include
            }
    
            @Override
            public void onClick(View v) {
                int id = v.getId();
    
                if (id == R.id.container) {
                   if (myAdapterListener != null) {
        myAdapterListener.onContainerClick(v,getAdapterPosition());
                    }
                }
            }
        }
    
    
    

    Use it like this in your fragment/Activity

    mAdapter = new MyAdapter(getApplicationContext() , data, new MyAdapter.MyAdapterListener() {
                        @Override
                        public void onContainerClick(View v, int position) {
                            Log.d(TAG, "iconTextViewOnClick at position "+position);
                        }
    
                    });
    mRecycler.setAdapter(mAdapter);
    

    提交回复
    热议问题