Utilizzare la libreria di ButterKnife con 2 viste diverse in un frammento

Attualmente sto cercando di utilizzare la libreria ButterKnife per Android per gestire alcuni codici di codice ( https://github.com/JakeWharton/butterknife )

Ho installato, e ho ottenuto semilavorato, ma ho incontrato un problema che non posso risolvere: /

  • Invia i dati JSON da un servizio a UI in Android
  • Come creare un dispositivo virtuale Android con row di command e avdmanager?
  • Il codice flash di Android non funziona
  • Chiudere il database in un ContentProvider
  • Permessi di runtime Android - come implementare
  • Utilizza il simbolo speciale (<,>) nel layout di Android
  • Ho un frammento che contiene un singolo elemento ListView, e a questa list visualizzo un punto di vista che contiene diversi elementi.

    Questo è un frammento di codice dal mio frammento che utilizza la libreria:

    public class UsersFragment extends Fragment { @InjectView(R.id.users_listview_id) AutoUpdatingListView list; private View footerView; @InjectView(R.id.add_user_footer_firstname_edittext_id) BootstrapEditText firstnameEditText; @InjectView(R.id.add_user_footer_middlename_edittext_id) BootstrapEditText middlenameEditText; @InjectView(R.id.add_user_footer_lastname_edittext_id) BootstrapEditText lastnameEditText; @InjectView(R.id.add_user_footer_cancel_button_id) BootstrapButton cancelButton; @InjectView(R.id.add_user_footer_okay_button_id) BootstrapButton okayButton; @InjectView(R.id.add_user_footer_facebook_button) BootstrapCircleThumbnail facebookButton; @InjectView(R.id.add_user_footer_google_plus_button) BootstrapCircleThumbnail googlePlusButton; @InjectView(R.id.add_user_footer_twitter_button) BootstrapCircleThumbnail twitterButton; @InjectView(R.id.add_user_footer_linkedin_button) BootstrapCircleThumbnail linkedInButton; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.user_fragment, container, false); footerView = ((LayoutInflater) getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.add_user_footer_view, null, false); ButterKnife.inject(this, rootView); list.setAdapter(adapter); } } 

    Il codice di cui sopra non funziona, in quanto posso solo iniettare con 1 vista e se provo con entrambi (2x iniezione), il secondo inietta sovrascrive il primo, lasciandomi con valori nulli.

    Non riesco a specificare quale vista contiene gli elementi che posso fare con il regular findViewById ().

    Per chiarire, questo è il mio codice non-ButterKnife (che funziona al 100%):

      list = (AutoUpdatingListView) rootView.findViewById(R.id.users_listview_id); firstnameEditText = (BootstrapEditText) footerView.findViewById(R.id.add_user_footer_firstname_edittext_id); middlenameEditText = (BootstrapEditText) footerView.findViewById(R.id.add_user_footer_middlename_edittext_id); lastnameEditText = (BootstrapEditText) footerView.findViewById(R.id.add_user_footer_lastname_edittext_id); 

    Come potete vedere sopra, posso specificare "radice" o "footerview" come target del FindViewById.

    Chiunque può aiutare con questo problema? Mentre mi guida i dadi in questo momento.

  • Come utilizzare la camera per scattare foto in uno background Servizio su Android?
  • come impostare l'image a null in android quando il xml non ha src null?
  • Realm: lavorare con Clean-Architecture e RxJava2
  • ActionBarSherlock: aprire il sottomenu con il button menu
  • Come ridimensionare la mia versione SDK?
  • Come get il centro della mappa per le mappe Android v2?
  • One Solution collect form web for “Utilizzare la libreria di ButterKnife con 2 viste diverse in un frammento”

    La soluzione semplice è quella di mettere tutte le viste piè di pagina in una class di titolari di visualizzazione e quindi eseguire le iniezioni su oggetti diversi , mantenendo le visualizzazioni di piè di pagina facilmente accessibili all'interno del frammento.

     @InjectView(R.id.users_listview_id) AutoUpdatingListView list; private View footerView; public class FooterViewHolder { @InjectView(R.id.add_user_footer_firstname_edittext_id) BootstrapEditText firstnameEditText; @InjectView(R.id.add_user_footer_middlename_edittext_id) BootstrapEditText middlenameEditText; @InjectView(R.id.add_user_footer_lastname_edittext_id) BootstrapEditText lastnameEditText; @InjectView(R.id.add_user_footer_cancel_button_id) BootstrapButton cancelButton; @InjectView(R.id.add_user_footer_okay_button_id) BootstrapButton okayButton; @InjectView(R.id.add_user_footer_facebook_button) BootstrapCircleThumbnail facebookButton; @InjectView(R.id.add_user_footer_google_plus_button) BootstrapCircleThumbnail googlePlusButton; @InjectView(R.id.add_user_footer_twitter_button) BootstrapCircleThumbnail twitterButton; @InjectView(R.id.add_user_footer_linkedin_button) BootstrapCircleThumbnail linkedInButton; } private FooterViewHolder footerViewHolder; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.user_fragment, container, false); footerView = inflater.inflate(R.layout.add_user_footer_view, container, false); footerViewHolder = new FooterViewHolder(); ButterKnife.inject(this, rootView); ButterKnife.inject(footerViewHolder, footerView); list.setAdapter(adapter); return rootView; } 

    BTW, è considerata una ctriggers pratica per gonfiare le viste con un genitore null.

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