kodbankasi http://kodbankasi.org/kodbankasi

Gridview ve ImageAdapter kullanımı

Merhaba ,bu yazımda gridview’den bahsedeceğim. GridView ızgara şeklinde görünüm sunan layout türüdür. Listview gibi ögelerin listelenmesi için kullanılır benzer bir kullanım sekli vardır . ImageAdapter ise orneğimizde resim kullanacağımız için kullanmamız gereken bir adapter türüdür. Resim yerine bir dizi listeleseydik daha önce yaptığımız listview örneğinde olduğu gibi arrayadapter kulanabilirdik.

Şimdi sıra  adım adım gridview’i yaratıp gerekli bağlantıları yapmaya geldi.

İlk olarak yeni bir proje oluşturuyoruz. Daha sonra yeni bir layout oluşturuyoruz. Bu işlemi layout klasörü üzerinde sag click yaparak new -Android XML File şeklinde gerçekleştirebilirsiniz.

grid_layout.xml

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="90dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>

Burada 7. ve 8. satırlar yatay ve dikey boslukları ayarlamamızı sağlıyor.Daha sonra yeni bir class yaratıp bu class’ın ismine ImageAdapter diyoruz. ImageAdapter classını BaseAdapterden extends ediyoruz. Extends işlemi gerçekleştikten sonra class ismi kırmızı ile işaretlenecektir . Çünkü BaseAdapter’ün implement edilmesi gereken metodları vardır. Bunları implements ediyoruz.


public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return ImageArray.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(150, 150));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
//imageview'in boyut olcusunu ayarlar yüklenen resimlerin hepsi aynı boyutlarda olmayabilir setscale type
//bu resimleri belli olculerde keser
imageView.setPadding(2, 2, 2, 2);
//bu satır dort bir taraftan diger elemanları ittirir.
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(ImageArray[position]);
return imageView;
}
private Integer[] ImageArray = {
R.drawable.kapak_10, R.drawable.kapak_1,
R.drawable.kapak_11, R.drawable.kapak_2,
R.drawable.kapak_12, R.drawable.kapak_3,
R.drawable.kapak_13, R.drawable.kapak_4,
R.drawable.kapak_14, R.drawable.kapak_5,
R.drawable.kapak_15, R.drawable.kapak_6,
R.drawable.kapak_1, R.drawable.kapak_7,
R.drawable.kapak_3, R.drawable.kapak_8,
R.drawable.kapak_11, R.drawable.kapak_9,
R.drawable.kapak_7, R.drawable.kapak_1,
R.drawable.kapak_9, R.drawable.kapak_2
};
}

Yukarıda ki butun metodlar baseadapter’ü extends ettikten sonra eclipse tarafından otomatik olarak yazılan metodlardır. Bu metodlardan getCount() metodu array’in uzunlugunu bize geri döndürür. getView() ise view döndürür.Bizim burada döndürdüğümüz view ise imageView’dir.Gridview’in emulatördeki görünümü asağıdaki gibidir.
gridview

Bir önceki yazımız olan Android Spinner kullanımı başlıklı yazımızı da inceleyebilirsiniz.

21 Yorumlar

  1. Ugur Umutluoglu

    Çok güzel ve sade anlatmışsınız, işime yaradı gerçekten. Makalelerin hepsini okumaya çalışıyorum

  2. O resimlerden birine tıklayınca farklı bir sayfaya gitmek için ne yapmalıyım ? Lütfen Cevaplarsanız memnun olurum

    • Bunu yapabilmek için yeni bir xml ve class oluşturmanız gerekiyor. Gridview class içerisindeki java dosyasına da yeni bir intent oluşturup geçişi yaptırmanız gerekiyor. Intent ile activity geçişi diye sitede aratırsanız onun activity geçişleri ile ilgili bir makale bulunuyor.

  3. Bir uygulamamda oldukça yardımcı oldu bu yazı. Yorum bırakmadan geçmek istemedim. Teşekkürler Yasin Bey.

  4. üstad bu kodları çalıştırmak için oncreate methodunda ne yapmam gerekiyor

    bu konuda pek yeterli bilgiye sahip değilim yeni öğreniyorum android ve javayı

    • Kodları denediniz mi acaba ? Adım adım giderseniz uygulama çalışacaktır.

      Oncreate metodunda birşey yapmanıza gerek yok bu uygulama için.

  5. hocam bu resimleri aşağıya doğru kaydırmak istiyorum da nasıl yapabilirim? size zahmet yardımcı olurmusunuz

  6. Ekranda çok fazla resim olacaksa o zaman scrollview kullanmanız gerekiyor.

    Grid içerisindeki xml dosyasının başına ve sonuna scrollview tagları koyarsanız yani kodu scrollview içerisine alırsanız sorununuz büyük ihtimalle çözülecektir.

  7. Sorunumu iyi anlatamamışım kusura bakmayın:) demek istediğim :aynı uygulamanız gibi ekranda çok resim olacak ve aşağıya doğru sürekli bir akış olacak durdurmayana kadar sürekli akmasını istiyorum

  8. Android Developer

    grid_layout.xml ve ImageAdapter.java yi olusturdum,kodlari sorunsuz bir sekilde yazdim fakat bu benim ikinci activity olucak.ImageAdapter.java dosyasi BaseAdapterden extends edildigi icin OnCreate() ve setContentview() yazilamiyor.Yani xml ve java dosyasi birbirine baglanmiyor.Butona basinca bu sayfayi cagiramiyorum.yardimci olursaniz cok sevinirim.Tesekkurler.(projemi Android Studio da gelistiriyorum)

  9. Android Developer

    sorunu cozduk cok tesekkurler :)

  10. Tayfun IŞIK

    Verdiğiniz bilgiler için cok teşekkür ederim, faydalı bir yazı olmuş, ben buradaki resimleri uzak sunucumdan xml kullanarak çekmek istiyorum bunun için nasıl bir yol izlemem gerekiyor?

    iyi çalışmalar.

  11. bu bilişim çok zor yaaaaa

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.

Bu yazı da ilginizi çekebilir !

accelerometer

Android Sensör Kullanımı

Bir süre ara verdiğimiz android derslerimize kaldığımız yerden devam ediyoruz. Bir önceki makalemizde options menü ...