【问题标题】:Onclicklistener not working on recyclerviewOnclicklistener 在 recyclerview 上不起作用
【发布时间】:2015-08-14 07:58:12
【问题描述】:

我正在使用 recyclerview,下面给出的相同代码对我来说效果很好,但是 我尝试了以下代码,但它不起作用

recyclerView = (RecyclerView)v.findViewById(R.id.datelist);
    recyclerView.setClickable(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    recyclerView.setAdapter(adapter);
    adapter.setOnItemClickListener(this);

在适配器中

public  class UpdateHolder extends RecyclerView.ViewHolder
            implements View
            .OnClickListener,CompoundButton.OnCheckedChangeListener {
        TextView uname;
        TextView uversn;
        TextView usitting;


        public UpdateHolder(View itemView) {
            super(itemView);
            uname = (TextView) itemView.findViewById(R.id.update_name);
            uversn = (TextView) itemView.findViewById(R.id.update_version);
            usitting=(TextView) itemView.findViewById(R.id.sitting_type);

            Log.i(LOG_TAG, "Adding Listener");
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {

            myClickListener.onItemClick(getPosition(), v);
        }
}
public void setOnItemClickListener(MyClickListener myClickListener) {
        this.myClickListener = myClickListener;
    }

我也试过onCreateViewHolder中的in Adapter

请帮帮我

【问题讨论】:

  • 你在哪里定义你的“isclickable”属性?请展示您的完整代码并更好地对齐。
  • 请在此处添加适配器的全部代码
  • 在这里查看我的答案。可能会帮助你。 stackoverflow.com/questions/31821716/…

标签: android onclicklistener android-recyclerview


【解决方案1】:

对我来说,解决方案是从CardView xml 文件中删除以下内容。

android:clickable="true"

显然,此属性会覆盖添加到视图中的所有 clickListener。

【讨论】:

  • 另外值得一提的是,即使子布局具有此属性,也会出现此问题。这就是我的情况。
【解决方案2】:

在 recyclerView 中,您必须像下面的代码一样创建 viewHolder,您必须在 viewHolder 视图上设置点击侦听器,如下所示。

public static class ViewHolder extends RecyclerView.ViewHolder {
        private final TextView textView;
        private final MyEditText edtTest;

        public ViewHolder(View v) {
            super(v);
            // Define click listener for the ViewHolder's View.
            v.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.d(TAG, "Element " + getPosition() + " clicked.");
                }
            });
            v.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    Log.e("Demo", "Long click done bro--------------------->");
                    return false;
                }
            });
            textView = (TextView) v.findViewById(R.id.textView);
            edtTest = (MyEditText) v.findViewById(R.id.edtTest);
        }

        public TextView getTextView() {
            return textView;
        }

        public EditText getEdtTest() {
            return edtTest;
        }
    }

【讨论】:

  • Darshan Mistry : 我想我已经发布了你给出的类似代码。
  • @Tushar,请删除实现 View.OnClickListener 在我写的时候写在点击监听器上,并删除 adapter.setOnItemClickListener(this);和 recyclerView.setClickable(true);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-31
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多