I dette raske tipset lærer du hvordan du integrerer Butter Knife-biblioteket i prosjektene dine, slik at du enkelt kan ordne visningene i oppsettet i programmets kode.
I alle Android-applikasjoner må du bruke findViewById ()
metode for hver visning i layoutet du vil bruke i programmets kode. Men som applikasjonsdesign blir mer komplekse oppsett, blir samtalen til denne metoden repeterende, og dette er hvor Butter Knife-biblioteket kommer inn.
Butter Knife-biblioteket, utvikler og vedlikeholdt av Jake Wharton (Square Inc.), har kommentarer som hjelper utviklere til å instantiere visningene fra vår aktivitet eller fragment. Det har også kommentarer til å håndtere hendelser som ved trykk()
, onLongClick ()
, etc.
I prøveprosjektet i denne opplæringen kan du se et eksempelprogram med en aktivitet og ett fragment med en implementering ved hjelp av Butter Knife-biblioteket og en vanlig implementering. La oss utforske trinnene som er involvert for å integrere Butter Knife-biblioteket.
Legg til følgende avhengighet til prosjektets build.gradle fil:
kompilere 'com.jakewharton: butterknife: 6.1.0'
Synkroniser deretter prosjektet ditt med denne filen ved å trykke på synkroniserings-knappen.
I hver aktivitet eller fragment må du fjerne eller kommentere alle anrop av findViewById ()
metode og legg til @InjectView
annotasjon før deklarasjonen av variabelen, som angir identifikatoren for visningen.
@InjectView (R.id.sample_textview) TextView sample_textview;
I onCreate ()
metode for aktiviteten, før du bruker noen visninger, anrop injisere
på Smørkniv
gjenstand.
ButterKnife.inject (this);
Hvis du bruker fragmenter, må du angi kilden til visningene i onCreateView ()
metode som vist nedenfor.
View view = inflater.inflate (R.layout.sample_fragment, null); ButterKnife.inject (dette, visning);
Du kan nå begynne å bruke visningene i programmets kode. Butter Knife vil håndtere instantiation av hver enkelt visning for deg.
Det er alt du trenger å gjøre for å bruke Butter Knife-biblioteket i en aktivitet eller et fragment. I neste avsnitt skal jeg vise deg hvordan du bruker Butter Knife-biblioteket for å bruke listevisninger.
De Listevisning
klassen er et spesielt tilfelle å implementere, fordi du instantierer visningene inne i en adapter. For å integrere Butter Knife-biblioteket i en listevisning må du først opprette egendefinert layout for elementene i listevisningen. Jeg skal nevne min LIST_VIEW_ITEM
og legg til følgende layout:
I dette enkle oppsettet skal vi vise et bilde og litt tekst. Deretter må vi opprette adapteren for listevisningen. La oss nevne det ListViewAdapter
.
offentlig klasse ListViewAdapter utvider BaseAdapter LayoutInflater inflater; offentlig ListViewAdapter (LayoutInflater inflater) this.inflater = inflater; @Override public int getCount () return 5; @Override public Object getItem (int posisjon) return null; @ Overstyr offentlig, long getItemId (int posisjon) return 0; @ Overstyr offentlig visning getView (int posisjon, Vis convertView, ViewGroup forelder) return null; statisk klasse ViewHolder public ViewHolder (View view)
Inne i adapterklassen er det en statisk klasse som heter ViewHolder
å holde det i orden. Vi skal bruke denne klassen til å inneholde visningene. La oss implementere ViewHolder
klassen som følger:
statisk klasse ViewHolder @InjectView (R.id.image_in_item) ImageView-bilde; @InjectView (R.id.textview_in_item) TextView-tekst; offentlig ViewHolder (View view) ButterKnife.inject (dette, visning);
Alt vi må gjøre nå er å endre getView ()
metode som følger:
offentlig visning getView (int posisjon, se convertView, ViewGroup foreldre) ViewHolder holder; View view = inflater.inflate (R.layout.list_view_item, foreldre, false); holder = ny ViewHolder (visning); Picasso.with (inflater.getContext ()) .load ("http://lorempixel.com/200/200/sports/" + (posisjon + 1)) .into (holder.image); holder.text.setText ("Dette er en tekst for bildenummeret:" + posisjon); returnere visning;
I denne metoden blåser jeg opp tilpassede layoutet inni utsikt
variabel og bruk den til å opprette et objekt av ViewHolder
klasse. Legg merke til at vi bruker Picasso
klasse for å laste eksterne bilder og fylle tekstvisningen med litt tekst. Du kan finne Picasso-opplæringen nyttig hvis du vil bli kjent med dette biblioteket.
Ikke glem å legge til android.permission.INTERNET
tillatelse i Android-manifestet. Hvis du ikke gjør det, kan Picasso ikke koble til nettet og laste de eksterne bildene.
Til slutt, alt du trenger å gjøre er å ordne listevisningen og feste adapteren. Jeg skal gjøre dette i en ny aktivitet, ListViewActivity
, som vist under. Du kan se et eksempel på denne implementeringen i kildefilene i denne opplæringen.
offentlig klasse ListViewActivity utvider ActionBarActivity @InjectView (R.id.listView) ListView-listen; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_list_view); ButterKnife.inject (this); list.setAdapter (ny ListViewAdapter ((LayoutInflater) getSystemService (LAYOUT_INFLATER_SERVICE)));
Du kan også bruke Butter Knife's kommentarer til arrangementer. Velg annotasjonen du vil bruke, i henhold til hendelsen du vil svare, og sett den før metoden du vil utføre når hendelsen skjer.
@OnClick (R.id.sample_textview) public void showToastMessage () Toast.makeText (MainActivity.this, "Dette er en melding fra aktiviteten", Toast.LENGTH_SHORT) .show ();
Du kan bruke Butter Knife injisere ()
metode hvor som helst du ellers ville bruke findViewById ()
Metode for å spare tid og unngå kodrepetisjon når du må instantiere visningene i oppsettet. Du er velkommen til å dele denne hurtige tipsen hvis du har funnet det nyttig.