Android開發筆記-RecyclerView添加點擊事件

  Android中RecyclerView控件沒有點擊事件衆所周知,做一個小記錄,方便以後快速查閱:

  在自定義的adapter適配器中,實現如下:

public class MyViewAdapter extends RecyclerView.Adapter<MyViewAdapter.ViewHolder> implements View.OnClickListener {
  
	...
	
	 @NonNull
    @Override
    public MyViewAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        ViewHolder viewHolder = null;
        if (viewHolder == null) {
            View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_content, parent, false);
            viewHolder = new ViewHolder(itemView);
            itemView.setOnClickListener(this);
        }
        return viewHolder;
    }
	 @Override
    public void onBindViewHolder(@NonNull RecyclerViewAdapter.ViewHolder holder, int position) {
        String text = mList.get(position).getText();
        holder.mTextView.setText(text);
        holder.itemView.setTag(position);  //把位置設置到tag中,與下面對應。
    }

 private OnItemClickListener mOnItemClickListener;

    public interface OnItemClickListener {
        void onItemClick(View view, int position);
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }

  @Override
    public void onClick(View v) {
        if (mOnItemClickListener != null) {
		//注意這裏使用getTag方法獲取position
            mOnItemClickListener.onItemClick(v, (int) v.getTag());
        }
    }
  ...
  }

 在Activity中使用:

  mRvAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
               Log.d("TAG",mList.get(positon));
            }
        });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章