android – 我应该在哪里放置setOnClickListener在RecyclerView适配器中

前端之家收集整理的这篇文章主要介绍了android – 我应该在哪里放置setOnClickListener在RecyclerView适配器中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在互联网上的教程中,他们在RecyclerView的Adapter中设置了OnClickListener,它们以两种方式定义它:在ViewHolder内部或在BindViewHolder内部.

我的问题是哪一个是更好的方法,请推荐任何其他方法(如果有的话)

1)在ViewHolder中:

public static class ViewHolder extends RecyclerView.ViewHolder {

    public ViewHolder(View itemView) {
        super(itemView);
        tvSrc = (TextView) itemView.findViewById(R.id.tvSrc);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(),"inside viewholder position = " + getAdapterPosition(),Toast.LENGTH_SHORT).show();
            }
        });
    }

2)在BindViewHolder中

public void onBindViewHolder(DisplayTrainsAdapter.ViewHolder viewHolder,final int position) {

    viewHolder.tvSrc.setText(mDataset.get(position).strSrc);
    viewHolder.tvSrc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Toast.makeText(v.getContext(),"position = " + getItemId(position),Toast.LENGTH_SHORT).show();
        }
    });
}

解决方法

两种选择都有其优点和缺点.

例如,如果单击一个Button并且您想要更改按钮的文本,那么您应该使用在ViewHolder中设置onClick侦听器的选项.除此之外,它还使您的代码看起来更干净.

但是,如果单击按钮,您想要在与单击的按钮相同的索引/位置更改TextView的文本,则需要使用在onBindViewHolder方法中设置onClick侦听器的选项.

原文链接:https://www.f2er.com/android/316852.html

猜你在找的Android相关文章