2014-11-06 18 views
11

Come onItemClick non è più in RecyclerView, ButterKnife è ancora in grado di gestire i clic degli articoli con @onItemClick o con le annotazioni @onClick?Come utilizzare ButterKnife OnItemClick con RecyclerView?

In caso contrario, qualsiasi soluzione per utilizzarlo?

+0

Potrebbe illustrare un po 'più su questo, come si ottiene la posizione della cella cliccata per favore? – aprofromindia

+0

Puoi mostrare più dati o codice per capire di cosa hai bisogno – IgniteCoders

risposta

1

Sfortunatamente ButterKnife non supporta questa funzione. Puoi creare qualcosa usando RecyclerView.OnItemTouchListener o @OnClick e interfaccia.

9

La mia soluzione è utilizzare @OnClick all'interno di ViewHolder. Questo è l'unico modo per avere un indizio su quale elemento della "voce di elenco" è stato cliccato.

-1
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener 
      @Override 
      public void onClick(View view) { 

       int data = getAdapterPosition(); 
/* 
      Intent in = new Intent(getContext(),NextActivity.class); 
       in.putExtra("data",mTextView.getText().toString()); 
      startActivity(in); 
*/ 
//    Flower current = ls.get(position); 
## Heading ## 

       int itemPosition = recycelr.getChildLayoutPosition(view); 
       Flower item = fl_List.get(itemPosition); 

       Intent in = new Intent(getContext(),NextActivity.class); 
       in.putExtra("id",0); 
       in.putExtra("data",item.getName()); 
       startActivity(in); 

      } 
+4

Spiega il codice usato in dettaglio. – Yatin

+1

Mentre ** questo codice ** può rispondere alla domanda, è meglio includere la parte essenziale del testo per la comprensione e fornire il codice come riferimento. ** Le sole risposte solo codice ** possono diventare non valide se ** il codice ** diventa obsoleto. – Sufian

1

@OnClick opere di annotazione, Usa come di seguito nella classe ViewHolder.

class ViewHolder extends RecyclerView.ViewHolder { 

    @BindView(R.id.title) 
    TextView title; 

    ViewHolder(View itemView) { 
     super(itemView); 
     ButterKnife.bind(this, itemView); 
    } 

    @OnClick 
    void onClick(View view) { 
     System.out.println(getAdapterPosition()); //clicked item position 
    } 
} 
Problemi correlati