RecyclerView中item以及其子view点击事件的实现

2019-03-02  本文已影响0人  奥利奥蘸墨水
    public static interface OnItemClickListener {
        void onItemClick(View view,ViewName VIEW,int position);
        void onItemLongClick(int position);
    }
private OnItemClickListener mOnItemClickListener = null;
public void setmOnItemClickListener(RecyclerViewMessageAdapter.OnItemClickListener onItemClickListener){
    this.mOnItemClickListener = onItemClickListener;
}
    itemView.setOnClickListener(RecyclerViewMessageAdapter.this);
    circleImageView.setOnClickListener(RecyclerViewMessageAdapter.this);
    //用一个枚举类型来表示不同的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;
        }
    }
@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;
    }
}

一个小坑

上一篇 下一篇

猜你喜欢

热点阅读