為RecycleView添加item點(diǎn)擊事件

和ListView不一樣的是,RecyclerView不再負(fù)責(zé)Item的擺放等顯示方面的功能。所有和布局、繪制等方面的工作Google都其拆分成不同的類(lèi)進(jìn)行管理。也因?yàn)槿绱薘ecyclerView中沒(méi)有對(duì)item的點(diǎn)擊事件,下面我們來(lái)介紹一種在RecyclerView添加Item點(diǎn)擊事件的方法。

在Adapter中實(shí)現(xiàn)

原理:

在ViewHolder中可以得到每個(gè)item的根布局,所以我們可以對(duì)根布局進(jìn)行OnClick的監(jiān)聽(tīng),利用java的回調(diào)機(jī)制將這個(gè)監(jiān)聽(tīng)公開(kāi)給Adapter,這樣就能夠?qū)ecyclerView設(shè)置ItemClickListener,不過(guò)這個(gè)Listener不是設(shè)置到RecyclerView上而是設(shè)置到Adapter。

具體實(shí)現(xiàn)步驟:

新建一個(gè)Adapter繼承RecyclerView.Adapter<VH>,這里以MyAdapter為例:

  1. 定義一個(gè)接口:
  public interface setOnItemClickListener{
        void OnItemClickListener(int pos);
    }
  1. 新建一個(gè)私有變量用于保存用戶設(shè)置的監(jiān)聽(tīng)器及其set方法:
private setOnItemClickListener mListener;
  1. 在View Holder中對(duì)每個(gè)Item的根布局實(shí)現(xiàn)監(jiān)聽(tīng)
if(mListener!=null){
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mListener.OnItemClickListener(position);
                }
            });
        }
  1. 暴露一個(gè)方法供外界調(diào)用
public void setOnItemClickListener(OnItemClickListener mListener){
        this.mListener=mListener;
    }
  1. 外界調(diào)用
    初始化MyAdapter后
mAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
           @Override
           public void OnItemClickListener(int pos) {
//                TODO;
           }
       });
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容