Android应用程序:默认模板中的自定义数组适配器,而不是对象

时间:2014-01-08 04:14:22

标签: android listview

我一直在努力学习如何使用Eclipse中的“Master / Detail Flow”来开发Android应用程序。

我的问题是我无法理解如何创建我自己的ArrayAdapter(所以我可以改变每行的颜色等等),看起来几乎相同,但会采用“LibHome.ITEMS”(一个对象?而不是一个简单的数组。

我真的不明白如何使这项工作。我也不希望盲目地适应另一种解决方案而不是学习。

setListAdapter(
        new ArrayAdapter<LibHome.GenItem>(
            getActivity(),
            android.R.layout.simple_list_item_activated_1,
            android.R.id.text1,
            LibHome.ITEMS
        )
    );

LibHome.java:

package com.example.prac2.lib;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class LibHome {

    /**
     * Create an Array
     */
    public static List<GenItem> ITEMS = new ArrayList<GenItem>();

    /**
     * A map of sample (dummy) items, by ID.
     */
    public static Map<String, GenItem> ITEM_MAP = new HashMap<String, GenItem>();

    /**
     * Add Items to the array
     */
    static {
        // Items!
        addItem(new GenItem("1", "Title1", "File1"));
        addItem(new GenItem("2", "Title2", "File2"));
        addItem(new GenItem("2", "Title3", "File3"));

    private static void addItem(GenItem item) {
        ITEMS.add(item);
        ITEM_MAP.put(item.id, item);
    }

    /**
     * A dummy item representing a piece of content.
     */
    public static class GenItem {
        public String id;
        public String content;
        public String file;

        public GenItem(String id, String content, String file) {
            this.id = id;
            this.content = content;
            this.file = file;
        }

        @Override
        public String toString() {
            return content;
        }
    }

}

1 个答案:

答案 0 :(得分:2)

要使其正常工作,您需要创建一个自定义Adapter类来获取LibHome项目。要做到这一点,你会做这样的事情,

public class LibAdapter extends ArrayAdapter<LibHome> {
public LibAdapter(Context context, int textViewResourceId, ArrayList<LibHome> objects) {
    super(context, textViewResourceId, objects);
    this.objects = objects;
}


public View getView(int position, View convertView, ViewGroup parent){
            //Here is where you would change the colors of the text. 
            return v;

}

}

有一些很好的教程可以帮助你..这里有一些..