Android | Custom Gridview örneği

Written by Super User. Posted in Android Anlatımlar

Link 'teki örneğimizde, aktivitemizde gridView görünümü alma örneğini gerçekleştirmiştik. Örneğimizde elde edeceğimiz gridView görünümü için basit bir adapter kullanmıştık. Bu adapter'ımızı değiştirerek gridView görünümümüzü kendi ihtiyaçlarımız doğrultusunda özelleştirebilmemiz mümkün. Bunu da, sonucunda alttaki şekildeki gibi bir görünüm ortaya çıkaracağımız bir örnekle inceleyelim.

main.xml dosyamız

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <GridView
        android:id="@+id/gridView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numColumns="2" >
    </GridView>

</LinearLayout>

GridView'ımızdaki her bir eleman için kullanılacak layout dosyamız item_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    
     >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="/@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageView1"
        android:layout_toRightOf="@+id/imageView1"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

GridView'ımıza setleyeceğimiz adapter sınıfımız CustomAdapter.java

package com.gokselguren.customgridview;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomAdapter extends BaseAdapter {
	private Context context;
	private final String[] sanatcilar;

	public CustomAdapter(Context context, String[] sanatcilar) {
		this.context = context;
		this.sanatcilar = sanatcilar;
	}

	public View getView(int position, View convertView, ViewGroup parent) {

		LayoutInflater inflater = (LayoutInflater) context
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

		View gridView;

		if (convertView == null) {

			gridView = new View(context);

			// Elemanlarımız için kullanacağımız layoutu inflate edelim
			gridView = inflater.inflate(R.layout.item_layout, null);

			// TextView'ımızı setleyelim
			TextView textView = (TextView) gridView
					.findViewById(R.id.textView1);
			textView.setText(sanatcilar[position]);

			
			ImageView imageView = (ImageView) gridView
					.findViewById(R.id.imageView1);

			String sanatci = sanatcilar[position];
                        //Textimize göre resmimizi ayarlayalım
			if (sanatci.equals("Müslüm Gürses")) {
				imageView.setImageResource(R.drawable.muslumgurses);
			} else if (sanatci.equals("Şebnem Ferah")) {
				imageView.setImageResource(R.drawable.sebnemferah);
			} else if (sanatci.equals("Sezen Aksu")) {
				imageView.setImageResource(R.drawable.sezenaksu);
			} else {
				imageView.setImageResource(R.drawable.resimyok);
			}

		} else {
			gridView = (View) convertView;
		}

		return gridView;
	}

	public int getCount() {
		// TODO Auto-generated method stub
		return sanatcilar.length;
	}

	public Object getItem(int arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	public long getItemId(int arg0) {
		// TODO Auto-generated method stub
		return 0;
	}

}

Aktivite sınıfımız MainActivity.java

package com.gokselguren.customgridview;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	GridView gridView;
	 
	static final String[] Sanatcilar = new String[] { 
		"Müslüm Gürses", "Şebnem Ferah","Sezen Aksu", "Teoman" };
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        gridView = (GridView) findViewById(R.id.gridView1);
        
		gridView.setAdapter(new CustomAdapter(this, Sanatcilar));
                //Elemanlardan birisine tıklandığında sanatçı ismi toast mesajı olarak gösterilsin.
		gridView.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> parent, View v,
					int position, long id) {
				Toast.makeText(
				   getApplicationContext(),
				   ((TextView) v.findViewById(R.id.textView1))
				   .getText(), Toast.LENGTH_SHORT).show();
 
			}
		});
    }
}

Vee son olarak resimlerimiz;