RecyclerView實現(xiàn)Item點擊事件方法二

RecyclerView實現(xiàn)Item點擊事件方法一》上篇文章中我們通過一種方式實現(xiàn)了條目的點擊事件,今天我們用另外一種方式來實現(xiàn)RecyclerView的條目點擊事件來彌補(bǔ)方法一中所提到的缺陷

利用Adapter來實現(xiàn)

adapter code

public void setOnItemClickListener(OnItemClickListener listener) {
        mOnItemClickListener = listener;
    }
    
    
    class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        public ViewHolder(View itemView) {
            super(itemView);
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            if (mOnItemClickListener != null) {
                mOnItemClickListener.onItemClick(v);
            }
        }
    }
    
    public interface OnItemClickListener{
        void onItemClick(View view);
    }

Adapter中的實現(xiàn)基本和上篇文章一樣,這里我們只是添加了方法setOnItemClickListener,在ViewHolder中為itemView設(shè)置了點擊事件,然后在onClick方法中回調(diào)了使用者傳進(jìn)的我們定義的接口OnItemClickListener中的方法onItemClick,Activity中的代碼稍有改動;

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ......
        Adapter adapter = new Adapter();
        adapter.setOnItemClickListener(this);
        recyclerView.setAdapter(adapter);
    }

    @Override
    public void onItemClick(View view) {
        int childAdapterPosition = recyclerView.getChildAdapterPosition(view);
        Toast.makeText(AdapterItemClickActivity.this, "item click index = "+childAdapterPosition, Toast.LENGTH_SHORT).show();
    }

效果圖我們就不看了,主要分析下這種方式的缺陷,雖然這種方式解決了我們之前說的方法一的實現(xiàn)方式中的缺陷,但這種也是有不合理的地方,我們試想下,RecyclerView的條目點擊事件為啥我們要和Adapter扯上關(guān)系了,按照正常思維,我們?yōu)镽ecyclerView設(shè)置條目點擊事件不應(yīng)該是找RecyclerView對象進(jìn)行設(shè)置嗎?就從設(shè)計的角度來看待這個方式的實現(xiàn),就是有問題的<當(dāng)然如果你不介意這么多這種方式就可以了>。下篇文章我們就解決不利用Adapter的方式來實現(xiàn)RecyclerView的條目點擊事件,歡迎大家關(guān)注

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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