CafeMobil Android aplikacija - 2. dio - izrada liste (ListView)
Pozdrav, napokon sam stigao napisati novi dio tutoriala. Žao mi je što ne stignem baš često raditi ovo, ali nije ni nešto baš popularno nažalost.
U ovom djelu se radi lista (ListView) koja sadrži stringove. Ti stringovi će kasnije postati naslovi tema sa Cafe Mobil foruma.
Prvo što treba napraviti je ukloniti stare elemente iz layout-a koje smo koristili samo za testiranje. Dakle iz activity_main.xml treba izbrisati <TextView> i <Button> i dodati <ListView> kojeg ćemo popuniti. Također kad izbrišemo te elemente, treba iz java koda izbrisati reference na njih, inače bi dobili NullPointerException.
Sada naš layout activity_main.xml izgleda ovako:
Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ListView
android:id="@+id/lista_naslova"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
Iz java koda je u onCreate metodi izbačen Button i njegov listener:
Code:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
Sada je potrebno prilagoditi onCreate metodu da radi sa našom listom, probat ću to objasniti sa komentarima unutar koda.
Code:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// dohvatiti XML element sa layouta
ListView listaNaslova = (ListView) findViewById(R.id.lista_naslova);
// popuniti polje stringova sa naslovima (trenutno samo za testiranje, kasnije idu pravi naslovi)
String[] naslovi = {
"IPTV na androidima",
"LG G3 D855 - Tutoriali, ručna nadogradnja",
"Garmin City Navigator Europe NT 2015.40", "Teclast T98 4G 32gb.",
"Samsung Galaxy S6: Najava,info,slike",
"igo primo problem na s4 i9505",
"Što Biste Promjenili Na Forumu?!?",
"Medion MDPNA150"
};
// izrađivanje adaptera za ListView koji popunjava listu sa poljem stringova
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1, // ovo je default TextView od androida, moguće je napraviti svoj
naslovi
);
// dodjeljivanje adaptera listi
listaNaslova.setAdapter(adapter);
}
Ako ste radili barem malo programiranja, tu bi više manje sve trebalo biti jasno osim adaptera. Adapteri u Androidu služe za popunjavanje elemenata koji se "ponavljaju", odnosno liste. Neki od elemenata što trebaju adaptere su ListView, GridView, RecyclerView, itd itd..
U ovom primjeru je korišten najjednostavniji adapter jer se lista sastoji od samo jednog elementa (jedan text), a za kompliciranije liste je potrebno napraviti svoju klasu koja popunjava svaki element posebno.
Rezultat koji dobijemo na kraju:
http://i.imgur.com/cKdMF7It.png
Podsjećam, na GitHub-u se mogu vidjeti sve promjene unutar projekta.