2015-08-14 13 views
6

Pracuję z recyclerview ten sam kod podany poniżej działa dobrze dla mnie, ale Próbowałem następujący kod, ale nie działaOnclicklistener nie działa na recyclerview

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

w adapterze

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

próbowałem też oddać w adapterze w onCreateViewHolder

Proszę mi pomóc

+0

Gdzie definiujesz swój atrybut "isclickable"? Pokaż swój pełny kod i wyrównaj go lepiej. –

+0

proszę podać cały kod adaptera tutaj –

+0

sprawdź moją odpowiedź tutaj. może ci pomóc. http://stackoverflow.com/questions/31821716/androidintent-from-recycler-view-to-activity/31825953#31825953 –

Odpowiedz

3

W recyclerView musisz utworzyć viewHolder jak poniższy kod, musisz ustawić clickenerener na ViewHolder View jak widać poniżej.

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: Myślę, że napisałem podobny kod podany przez ciebie. – Tushar

+0

@Tushar, usuń narzędzia View.OnClickListener zapisz na liście kliknięć w trakcie pisania i usuń również adapter.setOnItemClickListener (this); i recyclerView.setClickable (true); –

11

Dla mnie rozwiązaniem było usunąć z pliku poniżej CardView xml.

android:clickable="true" 

Wygląda na to, że ten atrybut zastępuje wszystkie obiekty kliknięcia dodane do widoku.

+0

Dzięki, uratowałeś mnie !! – AthibaN

Powiązane problemy