Mobil uygulamalarda kullanıcıya bazı verileri bir liste halinde göstermek için listview kullanırız. Listeleyeceğimiz elemanlar bir dizi veya veritabanı sorgu sonucu oluşturduğumuz bir liste olabilir. ListView kendi içinde satır satır textview nesneleri bulunduran bir elemandır. Eğer dilersek biz kendimiz bir satır tasarımı yapıp listviewi özelleştirebiliriz. Bu ayrı bir konu olup bununla ilgili ayrı bir yazı yazmayı düşünüyorum. Fakat şimdi en basit haliyle bir dizi tanımlayıp bu dizinin elemanlarını bir listviewde gösteren uygulamamızı yapalım ve detayları örnek üzerinde anlamaya çalışalım.
Layout dosyası
Öncelikle listviewi oluşturacağımız main_activity.xml layout dosyamızı res/layout/ dizininde oluşturuyoruz.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.ahmet.listview.MainActivity">
<ListView
android:id="@+id/main_activity_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
</RelativeLayout>
Burada önemli olan bilgi ListView in id özelliğidir (main_activity_listview).
boş listview in önizlemesi (main_activity.xml)
Liste için kullanılan diziyi tanımlama
Dizimizi tanımlamanın birkaç yolu var. Fakat ben renkler isimli diziyi res/layout/strings.xml dosyasında tanımlıyorum. Aşağıda java kod bölümünde bu diziye nasıl eriştiğimize değineceğim.
<array name="renkler">
<item>Sarı</item>
<item>Kırmızı</item>
<item>Yeşil</item>
<item>Mavi</item>
<item>Mor</item>
<item>Beyaz</item>
<item>Siyah</item>
<item>Eflatun</item>
<item>Turuncu</item>
</array>
Verileri gösterme
Bütün bu aşamalardan sonra artık renkler dizisi elemanlarını listview de gösterme işlemine geliyoruz. Bunun için öncelikle Activity sınıfından türettiğimiz MainActivity.java dosyamızı oluşturuyoruz.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// (1) xml layout dosyamızı java sınıfıyla bağlıyoruz.
setContentView(R.layout.main_activity);
// (2) strings.xml içindeki renkler dizisine erişiyoruz.
final String[] renkler=getResources().getStringArray(R.array.renkler);
// (3) ListView elemanına erişiyoruz.
ListView renkList=(ListView)findViewById(R.id.main_activity_listview);
// (4) Adapter tanımı
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, renkler);
// (5) listemizi adaptera bağlıyoruz
renkList.setAdapter(adapter);
// (6) liste elemanlarına tıklanma olayını yakalama
renkList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getApplicationContext(),
"Seçilen renk: " + renkler[position],
Toast.LENGTH_SHORT).show();
}
});
}
}
Kodlarımızı onCreate() metoduna yazıyoruz. Böylelikle aktivitemiz oluşturulur oluşturulmaz listemiz doldurulacaktır. İlk önce 1. adımda görüldüğü şekilde setContentView() metoduyla main_activity.xml layout dosyamıza erişiyoruz. Daha sonra 2. adımda strings.xml dosyasında oluşturduğumuz renkler dizisine erişiyoruz. 3. adımda ise ListView türünde ve renkList isminde bir değişken oluşturarak xml dosyamızda oluşturduğumuz ListView nesnesine erişiyoruz. 4. adıma geldiğimizde asıl işi yaptığımız kısmı görüyoruz. Veriler Adapter ile listeye doldurulur. Gönderdiğimiz parametrelere bakacak olursak:
- this: Context. Bu this deyimiyle değer olarak Activity'nin kendisinin dönmesini sağlıyoruz. ArrayAdapter, çalıştığı yerle ilgili bilgiyi Context'e ulaşarak bulur.
- android.R.layout.simple_list_item_1: Resource. Listemizin bina edileceği şablondur. Androidin hazır bir layoutudur.
- renkler: Listeyi dolduracağımız dizidir.
5. adımda artık listemizi oluşturduğumuz adapter nesnesine bağlıyoruz. 6. adımda ise oluşan listenin her bir elemanına tıklandığı zaman yakalanan olay yazılır. Biz uygulamada her tıklamada seçilen rengi bir toast mesajıyla ekranda gösteriyoruz.
verilerin yüklenmiş hali.
Toast mesajının gösterimi