Quick Tips: Bruk smør kniv til å injisere Synspunkter på Android

Quick Tips: Bruk smør kniv til å injisere Synspunkter på Android

25
Del
Del
Share < .no> Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

I denne rask spiss, vil du lære hvordan du kan integrere Butter Knife biblioteket i prosjektene for enkelt å instantiate visningene i layouten i programmets kode.

Innledning

I alle Android-applikasjonen, må du bruke findViewById () -metoden for hver visning i oppsettet du vil bruke i programmets kode. Men som programmenes design få mer kompliserte oppsett, blir kallet til denne metoden repeterende og det er her den Butter Knife biblioteket kommer inn.

The Butter Knife bibliotek, utvikler og vedlikeholdt av Jake Wharton (Square Inc.) har merknader som hjelper utviklere på å bruke utsikten fra vår aktivitet eller fragment. Det har også merknader til å håndtere hendelser som onClick (), onLongClick (), etc.

I prøven prosjekt av denne opplæringen, kan du se et eksempel program med en aktivitet og ett fragment med en implementering bruker Butter Knife bibliotek og en vanlig gjennomføring. La oss utforske trinnene involvert integrere Butter Knife biblioteket.

1. Bruke Butter Knife bibliotek

Trinn 1: Legg den Dependency

Legg til følgende avhengighet til prosjektets build.gradle filen:
kompilering 'com.jakewharton: butterknife: 6.1.0'

Neste, synkronisere prosjektet med denne filen ved å trykke på synkroniseringsknappen

Trinn 2:. Bruk merknadene

I hver aktivitet eller fragment, må du fjerne eller kommentere ut, hver samtale av findViewById () metoden og tilsettInjectView merknad før erklæringen av variable, noe som indikerer identifikatoren til visningen
InjectView (R.id.sample_textview) TextView sample_textview;
Trinn 3:. Injiser Visninger

I onCreate () metoden i aktivitet, før du bruker noen visninger

, ring injisere på butterknife objektet.
ButterKnife.inject (dette );

Hvis du bruker fragmenter, må du oppgi kilden til utsikten i onCreateView () -metoden som vist nedenfor
Vis view = inflater.inflate (R.layout.sample_fragment, null);. butterknife .inject (dette, view);

Du kan nå begynne å bruke visningene i programmets kode. Butter Knife vil håndtere oppretting av hver enkelt visning for deg.

Det er alt du trenger å gjøre for å bruke smør kniv biblioteket i en aktivitet eller fragment.In neste avsnitt, vil jeg vise deg hvordan du bruke smør kniv biblioteket for å bruke listevisninger.

2. Bruke Butter Knife Bibliotek med listevisninger

The Listview klassen er en spesiell sak å gjennomføre, fordi du instantiate visninger inne en adapter. Integrere Butter Knife biblioteket i en listevisning, må du først opprette den egendefinerte oppsettet for elementene i listevisning. Jeg kommer til å nevne min list_view_item og legge til følgende layout:?
≪ xml version = "1.0" encoding = "utf-8" > < RelativeLayout xmlns:? Android = "http: //skjemaer. android.com/apk/res/android "android: layout_width =" match_parent "android: layout_height =" match_parent "android: padding =" 10dp "android: bakgrunn =" @ android: farge /hvit "> < Imageview android: id = "+ id /image_in_item" android: layout_width = "100dp" android: layout_height = "100dp" /> < TextView android: id = "+ id /textview_in_item" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: Tekststørrelse = "16sp" android: layout_toRightOf = "+ id /image_in_item" android: layout_marginLeft = "10dp" /> < /RelativeLayout >

I dette enkle oppsettet, vi kommer til å vise et bilde og litt tekst. Deretter må vi lage adapter for listevisning. . La oss kalle det ListViewAdapter
public class ListViewAdapter strekker BaseAdapter {LayoutInflater inflater; offentlig ListViewAdapter (LayoutInflater inflater) {this.inflater = inflater; }Override Public int getCount () {return 5; }Override Offentlig Object getItem (int posisjon) {return null; }Override Offentlig lang getItemId (int posisjon) {return 0; }Override Offentlig Vis getView (int posisjon, Utsikt convertView, ViewGroup forelder) {return null; } Statisk klasse ViewHolder {public ViewHolder (Vis visning) {}}}

Inne i adapteren klassen, det er en statisk klasse kalt ViewHolder å holde den i orden. Vi kommer til å bruke denne klassen til å inneholde utsikten. La oss gjennomføre ViewHolder klasse som følger:
statisk klasse ViewHolder {InjectView (R.id.image_in_item) Imageview bildet; InjectView (R.id.textview_in_item) TextView tekst; offentlig ViewHolder (Vis visning) {ButterKnife.inject (dette, view); }}

Alt vi trenger å gjøre nå er å endre getView () metode som følger:
offentlig Vis getView (int posisjon, Utsikt convertView, ViewGroup forelder) {ViewHolder holder; View view = inflater.inflate (R.layout.list_view_item, foreldre, false); Holder = new ViewHolder (vis); Picasso.with (inflater.getContext ()) .load ("http://lorempixel.com/200/200/sports/" + (posisjon + 1)) .into (holder.image); holder.text.setText ("Dette er en tekst til bildet nummer:" + posisjon); returnere view;}

I denne metoden, jeg blåse opp egendefinert oppsett inne visningen variabel og bruke den til å lage et objekt av ViewHolder klassen. Legg merke til at vi bruker Picasso klassen til å laste eksterne bilder og fylle ut tekstvisning med litt tekst. Du kan finne Picasso opplæringen nyttig hvis du ønsker å få mer kjent med dette biblioteket.

Ikke glem å legge den android.permission.INTERNET tillatelse i Android manifest. Hvis du ikke gjør det, vil Picasso ikke være i stand til å koble til internett og laste inn eksterne bilder
< bruker-tillatelse android. Name = "android.permission.INTERNET" />

Til slutt, alt du trenger å gjøre er på å bruke listevisning og fest adapter. Jeg kommer til å gjøre dette inne i en ny aktivitet, ListViewActivity, som vist nedenfor. . Du kan se et eksempel på dette implementering i kildefilene for denne opplæringen
public class ListViewActivity strekker ActionBarActivity {InjectView (R.id.listView) Listview liste; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_list_view); ButterKnife.inject (denne); list.setAdapter (ny ListViewAdapter ((LayoutInflater) getSystemService (LAYOUT_INFLATER_SERVICE))); }}
3. Hendelser

Du kan bruke smør kniv er merknader for arrangementer også. Velg merknaden du vil bruke, i henhold til den hendelsen du vil svare, og sette den før den metoden du ønsker å kjø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) .vis ();}
Konklusjon

Du kan bruke smør kniv injisere () metode hvor som helst du ville ellers bruker findViewById () metode for å spare tid og unngå kode repetisjon når du har på å bruke visningene i oppsettet. Føl deg fri til å dele denne quick-tips hvis du fant det nyttig.