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

  • Branboy3

    Branboy3

    12 AĞUSTOS 2012
  • edwin maldonado

    edwin maldon

    28 Mart 2009
  • ODN

    ODN

    26 Kasım 2006