RecyclerView中item以及其子view點擊事件的實現(xiàn)方法

  • 在adapter中定義接口
    public static interface OnItemClickListener {
        void onItemClick(View view,ViewName VIEW,int position);
        void onItemLongClick(int position);
    }
  • 定義接口變量
private OnItemClickListener mOnItemClickListener = null;
  • 在adapter中設置以下函數(shù),供在activity或fragment中調用
public void setmOnItemClickListener(RecyclerViewMessageAdapter.OnItemClickListener onItemClickListener){
    this.mOnItemClickListener = onItemClickListener;
}
  • 在viewHolder中設置點擊事件
    itemView.setOnClickListener(RecyclerViewMessageAdapter.this);
    circleImageView.setOnClickListener(RecyclerViewMessageAdapter.this);
  • 重寫onClick函數(shù),根據(jù)id來區(qū)別每一個view,通過getTag()來獲取view的位置,記住在bind的時候要setTag(position)。ViewName變量類型是自己定義的枚舉類型。
    //用一個枚舉類型來表示不同的view
    public enum ViewName{
        ITEM,
        HEADER
    }
    @Override
    public void onClick(View v){
        int position = (int)v.getTag();
        switch (v.getId()){
            case R.id.civ_header:
                //這是頭像的點擊事件
                mOnItemClickListener.onItemClick(v,ViewName.HEADER,position);
                break;
            default:
                //默認是整個item的點擊事件
                mOnItemClickListener.onItemClick(v,ViewName.ITEM,position);
                break;
        }
    }
  • 在activity中實現(xiàn)接口該接口,重寫onItemClick()方法,同樣是根據(jù)id來區(qū)別不同的view。
@Override
public void onItemClick(View view, RecyclerViewMessageAdapter.ViewName viewName,int position) {
    switch (view.getId()){
        case R.id.civ_header:
            Toast.makeText(getContext(),"點擊了頭像:" + position,Toast.LENGTH_SHORT).show();
            Log.d(TAG, "onItemClick: 點擊了頭像:" + position);
            break;
        default:
            Toast.makeText(getContext(),"點擊了item:" + position,Toast.LENGTH_SHORT).show();
            Log.d(TAG, "onItemClick: 點擊了item:" + position);
            break;
    }
}

一個小坑

  • 今天我在設置item點擊事件的時候,發(fā)現(xiàn)實現(xiàn)之后無效,最后發(fā)現(xiàn)是我的item布局外面多套了一個framelayout,我的item布局是cardview寫的,當外面套了個framelayout的時候,item的點擊事件就失效了,刪除之后點擊事件就能用了。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容