Dove posso disboscare ButterKnife 8.xx in un ViewHolder?

Ho una class RecycleView.ViewHolder che utilizza annotazioni ButterKnife.

Dovrebbe anche il codice che mi abbandona () in questa class ViewHolder?

  • Come impostare text grassetto su Android Snackbar Action Text?
  • utilizzando un colore personalizzato per lo background del button mentre si utilizza l'attributo selectableItemBackground
  • setImageResource Vs setDrawable
  • Perché "i pulsanti nelle barre dei pulsanti devono essere senza bordi" nel livello Android API Android?
  • Aggiornamento widget widget dopo x tempo
  • come scorrere le tabs live in attività aglass
  • public class AView extends RecyclerView.ViewHolder { @BindView(R.id.a_text_view) TextView aText; public AView(final View view) { super(view); ButterKnife.bind(this, view); // It returns an Unbinder, but where should I call its unbind()? } } 

    I documenti ( http://jakewharton.github.io/butterknife/ ) non parlano di questo problema.

  • Reimposta i valori predefiniti di Preferenze
  • Come aggiungere elementi dynamicmente a una vista creata con XML
  • Vorrei impostare un'image salvata sulla scheda SD in background di layout principale tramite la mia applicazione
  • Allinea un'icona con l'icona della barra degli strumenti - Disegno materiale di Android
  • Come posizionare AdView sotto il RecyclerView? Vedi dettagli
  • TabWidget non stabile in fondo in Android? Perché?
  • 4 Solutions collect form web for “Dove posso disboscare ButterKnife 8.xx in un ViewHolder?”

    Secondo Jake Wharton, autore di Butterknife, unbind unbind() è richiesto solo per i Fragments . Vedi questo commento sul problema tracker:

    https://github.com/JakeWharton/butterknife/issues/879

    D: Nel RecyclerView , come facciamo a ViewHolder il ViewHolder ?

    A: Non è necessario. Solo i Fragments devono essere in onDestroyView() .

    La ragione è che

    [ ViewHolders ] non sopravvive della vista associata. Un Fragment fa.

    In altre parole, poiché un Fragment può continuare a esistere dopo la distruzione delle sue Views , è necessario call .unbind() da un Fragment per rilasciare il riferimento alle Views (e consentire la .unbind() della memory associata).

    Con un ViewHolder , il ciclo di vita del titolare è uguale a quello delle Views esso contenute. In altre parole, il ViewHolder e le sue Views vengono distrutte contemporaneamente, quindi non c'è mai un riferimento continuo da uno all'altro che è necessario eliminare manualmente.

    Ecco una spiegazione WHEN e WHY per utilizzare il metodo unbind() :

    RIMONTAGGIO DIMENSIONI

    I frammenti hanno un ciclo di vita diverso rispetto alle attività. Quando si lega un frammento in onCreateView , impostare le visualizzazioni su null in onDestroyView . Coltello burro restituisce un'istanza Unbinder quando si chiama bind per farlo per voi. Chiamare il suo metodo unbind nel callback appropriato del ciclo di vita.

     public class FancyFragment extends Fragment { @BindView(R.id.button1) Button button1; @BindView(R.id.button2) Button button2; private Unbinder unbinder; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fancy_fragment, container, false); unbinder = ButterKnife.bind(this, view); // TODO Use fields... return view; } @Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); } } 

    Da: http://jakewharton.github.io/butterknife/#reset

    quindi non è necessario affatto ViewHolder qualsiasi vista da ViewHolder .

    Spero che aiuterà

    Sì, lo fanno . Questo è necessario solo per i frammenti.

    Esiste un esempio nel documento che illustra come utilizzare questa libreria nel ViewHolder:

     static class ViewHolder { @BindView(R.id.title) TextView name; @BindView(R.id.job_title) TextView jobTitle; public ViewHolder(View view) { ButterKnife.bind(this, view); } } 

    Quindi, non è necessario call unbind per il tuo ViewHolder.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.