Sfat rapid Utilizarea cuțitului de unt pentru a injecta vizualizări pe Android

În acest sfat rapid, veți învăța cum să integrați biblioteca cu cuțite de unt în proiectele dvs. pentru a instanțializa cu ușurință vizualizările în aspectul dvs. în codul aplicației.

Introducere

În fiecare aplicație Android, trebuie să utilizați findViewById () pentru fiecare vizualizare în aspectul pe care doriți să îl utilizați în codul aplicației. Dar, pe măsură ce desenele aplicațiilor sunt mai complexe, apelul la această metodă devine repetitiv și aici vine biblioteca cu cuțite de unt.

Biblioteca cu cuțite de butoi, dezvoltată și întreținută de Jake Wharton (Square Inc.), are adnotări care îi ajută pe dezvoltatori să concretizeze opiniile din activitatea noastră sau din fragment. De asemenea, are adnotări pentru a gestiona evenimente precum onClick ()onLongClick (), etc.

În exemplul proiectului din acest tutorial puteți vedea o aplicație de probă cu o activitate și un fragment cu o implementare utilizând biblioteca cu cuțite de buton și o implementare regulată. Să explorăm pașii implicați în integrarea bibliotecii cu cuțite de unt.

1. Folosind Biblioteca cutitului de unt

Pasul 1: Adăugați dependența

Adăugați următoarea dependență la proiect build.gradle fişier:

compile 'com.jakewharton: untuknife: 6.1.0'

Apoi, sincronizați-vă proiectul cu acest fișier apăsând butonul de sincronizare.

Pasul 2: Utilizați adnotările

În fiecare activitate sau fragment, trebuie să eliminați sau să comentezeți fiecare apel de la findViewById () adăugați metoda @InjectView adnotare înainte de declararea variabilei, indicând identificatorul vizualizării.

@InjectView (R.id.sample_textview) TextView sample_textview;

Pasul 3: Injectați vederi

În onCreate () metodă a activității, înainte de a utiliza orice vizualizare, apel injecta pe Cuțit pentru unt obiect.

ButterKnife.inject (aceasta);

Dacă utilizați fragmente, trebuie să specificați sursa vizualizărilor din onCreateView () așa cum se arată mai jos.

Vizualizare vizualizare = inflater.inflate (R.layout.sample_fragment, null); ButterKnife.inject (această vizualizare);

Acum puteți începe să utilizați vizualizările din codul aplicației. Butter cuțit se va ocupa de instanțierea fiecărei vizualizări pentru tine.

Asta e tot ce trebuie să faceți pentru a utiliza biblioteca cuțitului cuțit într-o activitate sau un fragment. În secțiunea următoare, vă voi arăta cum să utilizați biblioteca cuțitului pentru a utiliza vizualizările de listă.

2. Folosind Biblioteca Cuțitului Butterului cu Vederi în Liste

ListView clasa este un caz special de implementat, deoarece instanțiați vizualizările din interiorul unui adaptor. Pentru a integra biblioteca cuțitului cuțit într-o vizualizare de listă, trebuie mai întâi să creați aspectul personalizat pentru elementele din vizualizarea listei. O să-mi spun numele LIST_VIEW_ITEM și adăugați următoarea structură:

    

În acest aspect simplu, vom arăta o imagine și un text. Apoi, trebuie să creați adaptorul pentru vizualizarea listei. Să spunem asta ListViewAdapter.

clasa publica ListViewAdapter extinde BaseAdapter LayoutInflater inflater; public ListViewAdapter (LayoutInflater inflater) this.inflater = inflater;  @Override public int getCount () retur 5;  @Override public Object getItem (poziție int) return null;  @Override public long getItemId (int poziție) return 0;  @Override public Vizualizare getView (poziție int, Vizualizare convertView, ViewGroup părinte) return null;  clasa statică ViewHolder public ViewHolder (Vizualizare vizualizare) 

În interiorul clasei de adaptor, se numește o clasă statică ViewHolder să o ținem în ordine. Vom folosi această clasă pentru a conține opiniile. Să implementăm ViewHolder clasa după cum urmează:

clasa de vedere statică ViewHolder @InjectView (R.id.image_in_item) ImageView imagine; @InjectView (R.id.textview_in_item) TextView text; ViewHolder public (Vizualizare vizualizare) ButterKnife.inject (această vizualizare); 

Tot ce trebuie să facem acum este să modificăm getView () după cum urmează:

public Vizualizare getView (pozitie int, Vizualizare convertView, ViewGroup parinte) ViewHolder holder; Vizualizare vedere = inflater.inflate (R.layout.list_view_item, parent, false); titular = ViewHolder nou (vizualizare); Picasso.with (inflater.getContext ()) .load ("http://lorempixel.com/200/200/sports/" + (poziția + 1)) .into (titlul.imaginii); holder.text.setText ("Acesta este un text pentru numărul imaginii:" + position); retur; 

În această metodă, umfrez aspectul personalizat din interiorul vedere variabilă și să o folosească pentru a crea un obiect al ViewHolder clasă. Rețineți că folosim Picasso pentru a încărca imagini de la distanță și pentru a popula vizualizarea textului cu un anumit text. Este posibil să găsiți tutorialul Picasso utile dacă doriți să vă familiarizați mai mult cu această bibliotecă.

Nu uitați să adăugați android.permission.INTERNET permisiune în manifestul Android. Dacă nu, Picasso nu va putea să se conecteze la web și să încarce imaginile de la distanță.

În cele din urmă, tot ce trebuie să faceți este să instanțiați vizualizarea listei și să atașați adaptorul. O să fac asta într-o nouă activitate, ListViewActivity, așa cum se arată mai jos. Puteți vedea un exemplu al acestei implementări în fișierele sursă ale acestui tutorial.

clasa publică ListViewActivity extinde ActionBarActivity @InjectView (R.id.listView) ListView List; @Override protejate void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_list_view); ButterKnife.inject (aceasta); list.setAdapter (noul ListViewAdapter ((LayoutInflater) getSystemService (LAYOUT_INFLATER_SERVICE)); 

3. Evenimente

Puteți folosi și adnotările cuțitului pentru evenimente. Alegeți adnotarea pe care doriți să o utilizați, în funcție de evenimentul pe care doriți să îl răspundeți, și puneți-l înainte de metoda pe care doriți să o executați la data producerii evenimentului.

@OnClick (R.id.sample_textview) public void showToastMessage () Toast.makeText (MainActivity.this, "Acesta este un mesaj din activitate", Toast.LENGTH_SHORT) .show (); 

Concluzie

Puteți utiliza cuțitul de unt injecta() metodă oriunde ați folosi altfel findViewById () pentru a economisi timp și a evita repetarea codului atunci când trebuie să instanțiați vizualizările în aspect. Simțiți-vă liber să împărtășiți acest sfat rapid dacă ați descoperit că este util.

Cod