Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur

3 Ekim 2010 Pazar

En Temel Generic Adapter


Burada bir list aktivite kullanarak setAdapter metodu çağırıyoruz. ListView bileşeneni ayrı bir şekilde herhangi bir layout içinde kullandığınızda ve findViewById ile nesneyi yakaladığınızda da göreceksinizki onunda içinde setAdapter metodu var :) (Hiçbir şey büyülü değildir)

Sıfırdan bir adapter yapıyorsanız bunu türetmeniz gerektiğini bilmeniz lazım. Peki bu adapter ne iş yapıyor ?
Listeleyici adapterden kayıtları değil, listenin içinde görünecek satırların view halini ister. Satırları oluşturmak için veriyide türettiğiniz adapter sınıfı içine koymak işinizi kolaylar ama dışarıda da tutabilirsiniz. Sonuç olarak bilmelisiniz ki getView, getItemId, getCount metotları adapter tarafından ilk yükleme ve dokunma halinde çağırılan metotlardır.

Programın başlangıç noktası olan ListActivity:

package com.yeni.listAdapter;

import android.app.ListActivity;
import android.os.Bundle;

public class baslangicAktivitesi extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setListAdapter(new yeniAdapter(this));
}
}


Kendi Adapter sınıfımız BaseAdapter sınıfından türeyecek:
package com.yeni.listAdapter;

import android.content.Context;
import android.database.DataSetObserver;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;

public class NewAdapter extends BaseAdapter {
private Context ctx;

public NewAdapter(Context _ctx) {
super();
ctx = _ctx;
}

@Override
public int getCount() {
return 3;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = new TextView(ctx);
tv.setText("This text will be shown");
LinearLayout lila = new LinearLayout(ctx);
lila.addView(tv, new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

return lila;
}
}


Sonuç olarak, NewAdapter sınıfının içindeki getCount metodunun sonucu kadar getView metodu çağırılıyor ve oluşan View gösteriliyor.

BaseAdapter sınıfındaki getItem metodunu ezmezsek aşağıdaki sonuç olacak:


Çünkü:


Daha sonra bir incelememi daha yazıya döktüm: BaseAdapter içinde işlenen sıralı metotlar