SORU
17 Kasım 2011, PERŞEMBE


Liste Görünümü için özel Adaptör

custom adapter listemdeki bir görünüm oluşturmak istiyorum. Bir tane oluşturmak ve aynı zamanda nasıl çalıştığını anlatmak için nasıl bir inceleyeyim herhangi bir madde var mı?

CEVAP
17 Kasım 2011, PERŞEMBE


public class ListAdapter extends ArrayAdapter<Item> {

    public ListAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }

    public ListAdapter(Context context, int resource, List<Item> items) {
        super(context, resource, items);
    }

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

        View v = convertView;

        if (v == null) {
            LayoutInflater vi;
            vi = LayoutInflater.from(getContext());
            v = vi.inflate(R.layout.itemlistrow, null);
        }

        Item p = getItem(position);

        if (p != null) {
            TextView tt1 = (TextView) v.findViewById(R.id.id);
            TextView tt2 = (TextView) v.findViewById(R.id.categoryId);
            TextView tt3 = (TextView) v.findViewById(R.id.description);

            if (tt1 != null) {
                tt1.setText(p.getId());
            }

            if (tt2 != null) {
                tt2.setText(p.getCategory().getId());
            }

            if (tt3 != null) {
                tt3.setText(p.getDescription());
            }
        }

        return v;
    }

}

Bu projem için kullanılan bir sınıftır. Görüntülemek istediğiniz öğeleri bir koleksiyon olması gerekir, benim durumumda <Item>. View getView(int position, View convertView, ViewGroup parent) yöntemi geçersiz kılmak gerekir.

R. düzeni.itemlistrow Liste Görünümü satır tanımlayan XML düzeni. Aşağıda kontrol edin.

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

    <TableRow android:layout_width="fill_parent"
              android:id="@ id/TableRow01"
              android:layout_height="wrap_content">

        <TextView android:textColor="#FFFFFF"
                  android:id="@ id/id"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:text="id" android:textStyle="bold" 
                  android:gravity="left"
                  android:layout_weight="1" 
                  android:typeface="monospace"
                  android:height="40sp" />
    </TableRow>

    <TableRow android:layout_height="wrap_content"
              android:layout_width="fill_parent">

        <TextView android:textColor="#FFFFFF" 
                  android:id="@ id/categoryId"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:text="categoryId" 
                  android:layout_weight="1" 
                  android:height="20sp" />

        <TextView android:layout_height="wrap_content"
                  android:layout_width="fill_parent" 
                  android:layout_weight="1"
                  android:textColor="#FFFFFF"
                  android:gravity="right"
                  android:id="@ id/description"
                  android:text="description" 
                  android:height="20sp" />
    </TableRow>

</TableLayout>

Bir liste Görünümü tanımlanan ana faaliyet vardır umarım.

Faaliyet sınıfı, bu gibi yapabilirsiniz.

ListView yourListView = (ListView) findViewById(R.id.itemListView);

// get data from the table by the ListAdapter
ListAdapter customAdapter = new ListAdapter(this, R.layout.itemlistrow, List<yourItem>);

yourListView .setAdapter(customAdapter);

Bu yardımcı olur umarım. Eğer herhangi bir sorunuz varsa, lütfen sorun.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Canal TekZoom

    Canal TekZoo

    1 NİSAN 2012
  • MovieZoneET

    MovieZoneET

    22 Aralık 2009
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005