How To Use Listview in Android


listviewBu örnekte basit bir ListView kullanımından bahsetmiş olacağız. Kısaca bahsedecek olursak, uygulama açıldığı anda ekranda daha önceden kaynak göstererek belirlediğimiz elemanlar bir list içerisinde görünecek ve herhangi birini seçtiğimiz durumda da diğer sayfaya seçili olarak gönderilecek. Daha sonra custom listview ler nasıl kullanılır, bu şekilde veya böyle veya şu şekilde nasıl yapılır hakkında bilgi vermiş olacağız. Şimdi uygulamaya geçecek olursak, öncelikle bir Android projesi oluşturalım.


File -> New Android Project, activity mizi de AndroidListViewActivity olarak adlandıralım. Şimdi otomatik olarak oluşturduğumuz activity açılacaktır. Burada oluşturulan activity class ını ListActivity den extend etmemiz gerekiyor. Şu şekilde:

public class AndroidListViewActivity extends ListActivity{ . . . }

Şimdi ise listView in içerisinde göstermek istediğimiz elemanları belirtelim. Burada bir XML dosyasına string array tanımlayacağız. Tabi ki bunu java tarafında bir string array ile de yapabiliriz fakat bu kullanım formata biraz daha uygun olduğu için bunu göstermek daha uygun. Yeni bir xml dosyası oluşturalım. Adı da “list_data.xml” olsun. Bu dosyayı “values” dizinin altına ekleyeceğiz (res/values/).
list_data.xml :

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<string-array name="car_brands">
		<item>Acura</item>
		<item>Alfa Romeo</item>
		<item>Aston Martin</item>
		<item>Audi</item>
		<item>Austin</item>
		<item>Bentley</item>
		<item>Bugatti</item>
		<item>Buick</item>
		<item>Cadillac</item>
		<item>Chery</item>
		<item>Chevrolet</item>
		<item>Chrysler</item>
		<item>Citroen</item>
		<item>Corvette</item>
		<item>Dacia</item>
		<item>Daewoo</item>
		<item>Daihatsu</item>
		<item>Daimler</item>
		<item>Datsun</item>
		<item>Dodge</item>
		<item>Donkervoort</item>
		<item>Ferrari</item>
		<item>Fiat</item>
		<item>Ford</item>
		<item>Galloper</item>
		<item>Honda</item>
		<item>Hummer</item>
		<item>Hyundai</item>
		<item>Infiniti</item>
		<item>Innocenti</item>
		<item>Jaguar</item>
		<item>Jeep</item>
		<item>Kia</item>
		<item>Lamborghini</item>
		<item>Land Rover</item>
		<item>Lincoln</item>
		<item>Lotus</item>
		<item>Marcos</item>
		<item>Maserati</item>
		<item>Mercedes</item>
		<item>Mini</item>
		<item>Mitsubishi</item>
		<item>Nissan</item>
		<item>Porsche</item>
		<item>Rolls-Royce</item>
		<item>Rover</item>
		<item>Subaru</item>
		<item>Toyota</item>
		<item>Volkswagen</item>
		<item>Volvo</item>
	</string-array>
</resources>

Şimdi ise ListView in içerisinde gösterilecek elemanlara geldik. Bunun için bir layout tanımlayalım. Ve adı da “list_item.xml” olsun. Bunun için “layout” dizininin altına yeni bir xml dosyası oluşturalım. res/layout/
list_item.xml :

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/label"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:padding="10dip"
	android:textSize="16dip"
	android:textStyle="bold" >
</TextView>

Artık main activity dosyamızı açabilir ve string kaynağı ListView e kaynak olarak göeterebiliriz. Bunun için
AndroidListViewActivity.java :

package paketAdi;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class AndroidListViewActivity extends ListActivity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// Tanımladığımız array in içine string resource tan (res/values/) veri çekmek.
		String[] adobe_products = getResources().getStringArray(R.array.car_brands);

		// Array i ListAdapter e bağlamak.
		this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, adobe_products));

	}
}

Şimdi projeyi çalıştırdığımızda ekrana ListView gelecek. Yalnız henüz herhangi bir eleman seçildiğinde yapılacak olan işlemi yazmadık.
screen8-1

Şimdi de listeden herhangi bir eleman için seçim yapıldığında gelecek olan ekranı ayarlayalım. Önce yeni bir xml dosyası oluşturalım
(res/layout/) “single_list_item_view.xml” :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="match_parent"
	android:layout_height="match_parent">
	
	<TextView android:id="@+id/product_label"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:textSize="30dip"
		android:textStyle="bold"
		android:padding="15dip"
		android:textColor="#ffffff"/>
	    
</LinearLayout>

Seçim aşamasından sonra açılacak olan sayfayı xml tarafından tanımladık. Şimdi de java tarafından tanımlayalım. Yeni bir java dosyası (activity, class) oluşturalım. (src/paketAdi sağ tık -> New -> Class), adı da “SingleListItem.java” olsun.

package paketAdi;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class SingleListItem extends Activity{
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.single_list_item_view);

		TextView txtProduct = (TextView) findViewById(R.id.product_label);

		Intent i = getIntent();
		// Önceki sayfadan gelen veriyi çekmek.
		String product = i.getStringExtra("product");
		// Seçili öğeyi göstermek.
		txtProduct.setText(product);

	}
}

Son olarak main activity dosyamızı (AndroidListViewActivity.java) açalım ve şu şekilde düzenleme yapalım.

package paketAdi;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class AndroidListViewActivity extends ListActivity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// Tanımladığımız array in içine string resource tan (res/values/) veri çekmek.
		String[] car_brands = getResources().getStringArray(R.array.car_brands);

		// Array i ListAdapter e bağlamak.
		this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, car_brands));

		ListView lv = getListView();

		// ListView in her hangi bir elemanının seçilme olayı.
		lv.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				// Seçili Eleman
				String product = ((TextView) view).getText().toString();

				// Seçim yapıldığında yeni bir Intent oluşturmak.
				Intent i = new Intent(getApplicationContext(), SingleListItem.class);
				// Tanımlanan activity ye diğer sayfaya göndermek için bilgi eklemek.
				i.putExtra("product", product);
				startActivity(i);
			}
		});
	}
}

NOT: Burada

ListView lv = getListView();

kullandık, yani herhangi bir xml den listview e ulaşmadık şunun gibi:

ListView list = (ListView)findViewById(android.R.id.list);

Main activity class ımız ListActivity den extends edildiği için bu şekilde kullanım yapabildik. Yoksa xml den kaynak göstermek durumunda olurduk.

Son olarak ekran görüntüleri aşağıdaki gibi olacaktır.
screen8-2
screen8-3

31 Ara 2012 tarihinde Android içinde yayınlandı ve , , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin. 1 Yorum.

  1. Arif ÇANKAYA

    Bir de SQLite veri tabanından ListView e veri aktarmayı anlatsanız.

Arif ÇANKAYA için bir cevap yazın Cevabı iptal et