Getting gang med RecyclerView og CardView på Android 
 41 
 Del 
 6 
 Del 
 Dette Cyber Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av. 
 
 Hvis du er interessert i å bygge en Android app som gjør bruk av lister for å vise data, Android Lollipop har to nye widgets for å gjøre livet ditt enklere, RecyclerView og CardView. Ved hjelp av disse widgets, er det veldig lett å gi appen en utseende som er i samsvar med de retningslinjer som er nevnt i Googles materialdesign spesifikasjon. 
 
 Forutsetninger 
 
 For å følge med , bør du bruke den nyeste versjonen av Android Studio. Du kan få det fra Android Developer nettstedet. 
 
 1. Støtter eldre versjoner 
 
 På det i skrivende stund, mindre enn 2% av Android-enheter kjøre Android Lollipop. Men takket være den v7 Support Library, kan du bruke RecyclerView og CardView widgets på enheter som kjører eldre versjoner av Android ved å legge til følgende linjer til avhengig delen i prosjektets build.grade filen: 
 kompilere 'com.android Støtte: cardview-v7. 21.0 + 'kompilere' com.android.support:recyclerview-v7:21.0.+'
2. Opprette en CardView 
 
 En CardView er en ViewGroup. Som alle andre ViewGroup, kan det bli lagt til din aktivitet eller Fragment bruker en layout XML-fil. 
 
 For å opprette en tom CardView, ville du må legge til følgende kode i layouten XML som vist i følgende tekstutdrag: 
 < android.support.v7.widget.CardView xmlns: card_view = "http://schemas.android.com/apk/res-auto" android: layout_width = "match_parent" android: layout_height = "wrap_content" > < /android.support.v7.widget.CardView> 
 Som et mer realistisk eksempel, la oss nå lage en LinearLayout og plassere en CardView inni den. Den CardView kunne representere, for eksempel, en person og inneholder følgende: 
 
 a TextView å vise navnet på personen 
 
 a TextView å vise personens alder 
 
 en Imageview for å vise personens bilder 
 
 Dette er hva XML vil se ut:? 
 < xml version = "1.0" encoding = "utf- 8 "? > < LinearLayout xmlns: android =" http://schemas.android.com/apk/res/android "android: layout_width =" match_parent "android: layout_height =" match_parent "android: padding =" 16dp " > < android.support.v7.widget.CardView android: layout_width = "match_parent" android: layout_height = "wrap_content" android: id = "+ id /cv" > < RelativeLayout android: layout_width = "match_parent" android: layout_height = "wrap_content" android: padding = "16dp" > < Imageview android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /person_photo" android: layout_alignParentLeft = "true" android: layout_alignParentTop = "true" android: layout_marginRight = "16dp" /> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /PERSON_NAME" android: layout_toRightOf = "+ id /person_photo" android: layout_alignParentTop = "true" android: Tekststørrelse = "30sp" /> < TextView android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: id = "+ id /person_age" android: layout_toRightOf = "+ id /person_photo" android: layout_below = "+ id /PERSON_NAME" /> < /RelativeLayout > < /android.support.v7.widget.CardView> < /LinearLayout > 
 Hvis dette XML brukes som utformingen av en aktivitet, med TextView og Imageview felt er satt til meningsfulle verdier, så dette er hvordan det ville gjengi på en Android-enhet: 
 
 3. Opprette en RecyclerView 
 
 Trinn 1: Definere Det i et oppsett 
 
 Ved hjelp av en RecyclerView eksempel er litt mer komplisert. Imidlertid definerer det i en layout XML-fil er ganske enkel. Du kan definere det i en layout som følger: 
 < android.support.v7.widget.RecyclerView android: layout_width = "match_parent" android: layout_height = "match_parent" android: id = "+ id /rv" /> 
 For å få et håndtak til den i aktivitet, bruker du følgende tekstutdraget: 
 RecyclerView rv = (RecyclerView) findViewById (R.id.rv); 
 Hvis du er sikker på at størrelsen på RecyclerView vil ikke være i endring, og du kan legge til følgende for å forbedre ytelsen: 
 rv.setHasFixedSize (true); 
 Trinn 2: Bruk en LayoutManager 
 
 I motsetning til en Listview, en RecyclerView trenger en LayoutManager for å styre posisjoneringen av dens elementer. Du kan definere din egen LayoutManager ved å utvide RecyclerView.LayoutManager klassen. Men i de fleste tilfeller kan du bare bruke en av de forhåndsdefinerte LayoutManager subclasses:
LinearLayoutManager
GridLayoutManager
StaggeredGridLayoutManager
In denne opplæringen, jeg kommer til å bruke en LinearLayoutManager. Dette LayoutManager underklasse vil, som standard, gjør RecyclerView ser ut som en Listview 
 LinearLayoutManager LLM = new LinearLayoutManager (kontekst), rv.setLayoutManager (LLM); 
 Trinn 3:. Definere data 
 
 
 Akkurat som en Listview, trenger en RecyclerView en adapter for å få tilgang til sine data. Men før vi lage en adapter, la oss lage data som vi kan arbeide med. Lag en enkel klasse for å representere en person og deretter skrive en metode for å klargjøre en liste over Person objekter: 
 class Person {String navn; String alder; int photoid; Person (String navn, String alder, int photoid) {this.name = navn; this.age = alder; this.photoId = photoid; }} privat List < Person > personer; //Denne metoden skaper en Arraylist som har tre Person gjenstander //Kasse prosjektets forbundet med denne opplæringen på Github hvis //du ønsker å bruke samme images.private void initializeData () {personer = new Arraylist < > ( ); persons.add (new Person ("Emma Wilson", "23 år gamle", R.drawable.emma)); persons.add (new Person ("Lavery Maiß", "25 år gamle", R.drawable.lavery)); persons.add (new Person ("Lillie Watts", "35 år", R.drawable.lillie));} 
 Trinn 4: Lage en adapter 
 
 Hvis du vil lage en adapter som en RecyclerView kan bruke, du må forlenge RecyclerView.Adapter. Denne adapteren følger utsikten holderen design mønster, noe som betyr at det å definere en egendefinert klasse som strekker RecyclerView.ViewHolder. Dette mønsteret reduserer antall henvendelser til den kostbare findViewById metoden. 
 
 Tidligere i denne opplæringen, vi allerede definert XML layout for en CardView som representerer en person. Vi kommer til å bruke dette oppsettet nå. Inne i konstruktøren av våre egendefinert ViewHolder, initial synspunktene som hører til de elementer av vår RecyclerView 
 public class RVAdapter strekker RecyclerView.Adapter. ≪ RVAdapter.PersonViewHolder > {public static class PersonViewHolder strekker RecyclerView.ViewHolder {CardView cv; TextView personName; TextView personlighet; Imageview personPhoto; PersonViewHolder (Vis itemView) {super (itemView); cv = (CardView) itemView.findViewById (R.id.cv); personName = (TextView) itemView.findViewById (R.id.person_name); persons = (TextView) itemView.findViewById (R.id.person_age); personPhoto = (Imageview) itemView.findViewById (R.id.person_photo); }}} 
 Deretter legger en konstruktør til skikken adapter slik at den har et håndtak til data som RecyclerView skjermer. Som vår data er i form av en liste over Person objekter, bruke følgende kode: 
 List < Person > personer; RVAdapter (Liste < Person > personer) {this.persons = personer;} 
 RecyclerView.Adapter har tre abstrakte metoder som vi må overstyre. La oss starte med getItemCount metoden. Dette bør returnere antall elementer som er tilstede i dataene. Som vår data er i form av en liste, vi trenger bare å ringe størrelsen metoden på listen objekt: 
Overridepublic int getItemCount () {return persons.size ();} 
 Neste, overstyre onCreateViewHolder metoden. Som navnet antyder, er denne metoden kalles når skikken ViewHolder Det må klargjøres. Vi spesifiserer oppsettet at hvert element av RecyclerView bør bruke. Dette gjøres ved å blåse oppsettet ved hjelp LayoutInflater, passerer utgang til konstruktøren av den tilpassede ViewHolder. 
Overridepublic PersonViewHolder onCreateViewHolder (ViewGroup viewGroup, int i) {Vis v = LayoutInflater.from (viewGroup.getContext ()). blåse (R.layout.item, viewGroup, false); PersonViewHolder PVH = new PersonViewHolder (v); returnere PVH;} 
 Overstyr onBindViewHolder å spesifisere innholdet i hvert element av RecyclerView. Denne metoden er svært lik den getView fremgangsmåte for en listevisningen s adapter. I vårt eksempel, her hvor du må sette verdiene for navn, alder og foto felt av CardView. 
Overridepublic Void onBindViewHolder (PersonViewHolder personViewHolder, int i) {personViewHolder.personName.setText (persons.get ( i) .name); personViewHolder.personAge.setText (persons.get (i) .age); personViewHolder.personPhoto.setImageResource (persons.get (i) .photoId);} 
 Til slutt, må du overstyre onAttachedToRecyclerView metoden. For nå kan vi bare bruke super implementering av denne metoden som vist nedenfor 
Overridepublic void onAttachedToRecyclerView (RecyclerView recyclerView) {super.onAttachedToRecyclerView (recyclerView);} 
 Trinn 5:. Bruke Adapter 
 
 
 Nå som adapteren er klar, legge til følgende kode i aktivitets å initial og bruke adapteren ved å ringe kortets konstruktør og RecyclerView er setAdapter metode: 
 RVAdapter adapter = new RVAdapter (personer), rv. . setAdapter (adapter); 
 Trinn 6: kompilere og kjøre 
 
 Når du kjører RecyclerView eksempel på en Android-enhet, bør du se noe som ligner på følgende resultat 
 
 Konklusjon 
 
 I denne opplæringen, har du lært hvordan du bruker CardView og RecyclerView widgets som ble introdusert i Android Lollipop. Du har også sett eksempler på hvordan du kan gjøre bruk av disse widgets i Material Design apps. Vær oppmerksom på at selv om en RecyclerView kan gjøre nesten alt en Listview kan, for små datasett, ved hjelp av en Listview er fortsatt å foretrekke fordi den krever færre linjer med kode. 
 
 Du kan referere til Android Developers Reference for mer informasjon om de CardView og RecyclerView klasser. 
 bilder

