创建自定义适配器类有什么需要?

时间:2012-09-06 16:50:23

标签: android-listview android-adapter custom-lists

我创建了一个包含ImageView和TextView的简单列表,而不使用自定义适配器类。我在互联网上搜索,发现大多数自定义列表都是使用单独的适配器类创建的...这是我列表行的布局......

list_row.xml

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

    <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        android:layout_marginRight="15dp"/>

    <TextView android:id="@+id/list_item_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="15dp"
        android:textSize="15sp"/>

</LinearLayout>

MainActivity.java

    //Taking reference of a ListView
    ListView listView = (ListView) findViewById(R.id.list_view);

    //Setting up ArrayList to feed ArrayAdapter
    ArrayList<String> fruits= new ArrayList<String>();
    fruits.add("Apple");
    fruits.add("Mango");
    fruits.add("Strawberries");
    fruits.add("Grapes");

    //Setting up ArrayAdapter   
    ArrayAdapter<String> adapter = new ArrayAdapter<String>
            (this, R.layout.list_row, R.id.list_item_id, fruits);
    listView.setAdapter(adapter);

以上代码工作正常...... 我只是想知道何时创建单独的Adapter类以及它的用途是什么? 换句话说,创建单独的Adapter类有什么好处? 任何帮助将不胜感激... 提前谢谢......

1 个答案:

答案 0 :(得分:3)

您是否为TextView中的每一行设置了ImageViewListView?因为看起来你不是。您为列表中的每一行提供了相同的图像,并且适配器正在设置文本。

如果您希望向Lists发送多个ArrayAdapter,则必须编写自己的适配器。就像您为ListView获取图片和文字一样。您必须编写自己的ArrayAdapter来设置文字图片,方法是将它们用相应的文字和图片展开到每个rowView

这也适用于每行更复杂的UI,如下所示: http://cloud.addictivetips.com/wp-content/uploads/2012/06/Reddit-Android-Reddit-Is-Fun1.jpg

每一行都有多个TextViewsButtons以及一个ImageView来自row.xml