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

  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • JayzTwoCents

    JayzTwoCents

    26 AĞUSTOS 2012
  • Visual Life

    Visual Life

    3 Temmuz 2006