2015-08-14 14 views
6

tôi đang làm việc với recyclerview cùng mã đưa ra dưới đây đã làm việc tốt cho tôi nhưng Tôi đã thử đoạn mã sau nhưng nó không làm việcOnClickListener không làm việc trên recyclerview

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

trong Adaptor

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; 
    } 

Tôi cũng đã thử Bộ điều hợp trong inCreateViewHolder

Hãy giúp tôi ra

+0

Bạn xác định thuộc tính "có thể nhấp" ở đâu? Vui lòng hiển thị mã hoàn chỉnh của bạn và căn chỉnh mã đó tốt hơn. –

+0

vui lòng thêm toàn bộ mã bộ điều hợp tại đây –

+0

kiểm tra câu trả lời của tôi tại đây. có thể giúp bạn. http://stackoverflow.com/questions/31821716/androidintent-from-recycler-view-to-activity/31825953#31825953 –

Trả lời

3

Trong recyclerXem bạn phải tạo viewHolder như bên dưới mã, bạn phải đặt trình lắng nghe nhấp chuột trên view ViewHolder như được thấy bên dưới.

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; 
     } 
    } 
+0

Darshan Mistry: Tôi nghĩ rằng tôi đã đăng mã tương tự do bạn đưa ra. – Tushar

+0

@Tushar, Vui lòng xóa công cụ Xem.OnClickListener ghi trên trình nghe nhấp chuột khi tôi viết và xóa cũng adapter.setOnItemClickListener (điều này); và recyclerView.setClickable (đúng); –

11

Đối với tôi, giải pháp là xóa phần bên dưới khỏi tệp CardView xml.

android:clickable="true" 

Rõ ràng, thuộc tính này sẽ ghi đè bất kỳ clickListeners nào được thêm vào chế độ xem.

+0

Cảm ơn, Bạn đã cứu tôi !! – AthibaN

Các vấn đề liên quan