RecycleView实现item中多个点击监听事件

RecycleView确实是一个好东东。它的使用大大提高了程序猿的开发效率,下面我为大家分享它的其中一个功能。如下
1,在adapter类中,需要创建两个点击事件和个监听事件。

public class ListenAdapter extends RecyclerView.Adapter<ListenAdapter.MyViewHolder> {
private Context context;
private List mlist;
private OnItemClick onItemClick;

public ListenAdapter( Context context, List<String> mlist) {
    this.context = context;
    this.mlist = mlist;

}

//定义设置点击事件监听的方法
public void setOnitemClickLintener(OnItemClick onItemClick) {

    this.onItemClick = onItemClick;
}

//定义一个点击事件的接口
public interface OnItemClick {
    void onAllItemClick(int position);

    void onItemClick(ImageView ivIcon2);
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
    View view = View.inflate(context, R.layout.listen_adapter, null);
    MyViewHolder holder = new MyViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //在TextView的地方进行监听点击事件,并且实现接口
            onItemClick.onAllItemClick(position);
        }
    });
    holder.ivIcon2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onItemClick.onItemClick(holder.ivIcon2);

        }
    });
}


@Override
public int getItemCount() {
    return 20;
}

class MyViewHolder extends RecyclerView.ViewHolder {
    @BindView(R.id.iv_icon)
    ImageView ivIcon;
    @BindView(R.id.text1)
    TextView text1;
    @BindView(R.id.iv_icon1)
    ImageView ivIcon1;
    @BindView(R.id.text2)
    TextView text2;
    @BindView(R.id.text3)
    TextView text3;
    @BindView(R.id.text4)
    TextView text4;
    @BindView(R.id.text5)
    TextView text5;
    @BindView(R.id.text6)
    TextView text6;
    @BindView(R.id.iv_icon2)
    ImageView ivIcon2;
    @BindView(R.id.re_layout)
    RelativeLayout reLayout;

    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }

}

}

2,需要在主类中的activity或者fragment类中初始化适配器,并且调用LinearLayoutManager布局管理器,对adapter的引用和关联。以下就是核心代码
private void initRecycle() {
LinearLayoutManager linearLayout = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); //线性布局管理器
recyclerview.setLayoutManager(linearLayout);
listenAdapter = new ListenAdapter(getActivity(), mlist);
recyclerview.setAdapter(listenAdapter);
recyclerview.addItemDecoration(new SpacesItemDecoration(spanCount, spacing, includeEdge));
listenAdapter.setOnitemClickLintener(new ListenAdapter.OnItemClick() {
// @Override
// public void onItemClick(int position) {
// /*显示dialog/
// deleteDialog = new DeleteDialog(getActivity(), positiveListener, nagivateListener);
// deleteDialog.show();
// }

        @Override
        public void onAllItemClick(int position) {
            /**跳转*/
            Intent intent = new Intent(getActivity(), ListenItemActivity.class);
            startActivity(intent);
        }

        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        @Override
        public void onItemClick(ImageView ivIcon2) {
            showPopWindow(ivIcon2);
        }
    });
}

如果觉得还行,请为我点赞,有不到之处请留言。谢谢

发布了16 篇原创文章 · 获赞 3 · 访问量 970

猜你喜欢

转载自blog.csdn.net/chengxuyuan22/article/details/99437704