Onclicklistener没有处理recyclerview

Tus*_*har 6 android onclicklistener android-recyclerview

我正在使用recyclerview,下面给出的相同代码对我来说工作正常,但我尝试了以下代码,但它无法正常工作

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

在适配器中

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;
    }
Run Code Online (Sandbox Code Playgroud)

我也在onCreateViewHolder中试过了in Adapter

请帮帮我

Neu*_*ino 13

对我来说,解决方案是从CardViewxml文件中删除下面的内容.

android:clickable="true"
Run Code Online (Sandbox Code Playgroud)

显然,此属性会覆盖添加到视图中的任何clickListeners.


Dar*_*try 3

在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;
        }
    }
Run Code Online (Sandbox Code Playgroud)