RecyclerView OnClickListener using interface

后端 未结 11 775
清歌不尽
清歌不尽 2020-12-01 09:49

I use RecyclerView adapter to display data inside an activity, I want to implement onClickListener inside the activity, currently, I am setting

11条回答
  •  自闭症患者
    2020-12-01 10:14

    Create an interface for the adapter class

    private OnItemClickListener mListener;
    
    public CustomAdapter(List listdata, OnItemClickListener listener) {
        mListener = listener;
        ...
        ...
    }
    
    private class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    
        ViewHolder(View view) {
            ...
            ...
            view.setOnClickLister(this);
        }
    
        @override
        public void onClick(View v) {
            mListener.onAdapterItemClick(getAdapterPosition())
        }
    }
    
    interface OnItemClickListener {
        void onAdapterItemClick(int position);
    }
    

    Let the activity implement the interface

    public class CustomListActivity extends AppCompatActivity implements OnItemClickListener {
    
    ...
    ...
    
    @override
    public void onAdapterItemClick(int position) {
        Toast.makeText(activity, "clicked on " +position, Toast.LENGTH_SHORT).show();
    }
    

    There is another way of doing this, check out this implementation

提交回复
热议问题