安卓应用程序:自定义阵列适配器从默认模板比工作对象



我一直在尝试学习如何使用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;
}
}
}

要实现这一点,您需要创建一个接受LibHome项的自定义Adapter类。要做到这一点,你可以做这样的事情,

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;
}

}

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

  • http://www.ezzylearning.com/tutorial.aspx?tid=1763429
  • http://www.vogella.com/tutorials/AndroidListView/article.html

最新更新