从Arraylist填充ListView <hashmap <string,string =“”>&gt; </hashmap <string,>

时间:2011-11-17 10:27:38

标签: android listview arraylist hashmap adapter

我有ArrayList<HashMap<Contact, Name>>,我想用它填充ListView。我可以使用什么类型的适配器以及我在适配器的from字段中放置什么?示例如下:

String[] from = ?
int[] to = new int[] { R.id.contact, R.id.name});
adapter = new KindOfAdapter(this, R.layout.row, from, to)

希望很清楚。感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

<强> 1。实施BaseAdapter

我认为最好的办法是扩展BaseAdapter并实施以下方法:

getCount()
getItem(int)
getItemId(int)
getView(int, View, ViewGroup)

它看起来像这样:

public class MyAdapter extends BaseAdapter() {
   private List<Map<Contact, Name>> map;
   private Context context;

   public MyAdapter(List<Map<Contact, Name>> map>, Context context) {
      this.map = map;
      this.context = context;
   }

   public int getCount() {
      return map.size(); // or do you want one list item per name?
      // if so, just count out all the map entries in each item of the list
   }

   public int getItemId(int position) {
      return position; // doesn't matter too much...
   }

   public View getView(int position, View convertView, ViewGroup parent) {
      // populate the view here...
      // use LayoutInflater.from(context).inflate(resource, parent, false) to inflate new views
   }
}

<强> 2。谨慎使用ViewHolder模式

实现getView()时,利用这种设计模式将节省大量内存:

http://www.screaming-penguin.com/node/7767

答案 1 :(得分:0)

这里有帮助你看到这个问题对你很有帮助..

How to iterate Arraylist<HashMap<String,String>>?

答案 2 :(得分:0)

ArrayAdapter&gt; - ArrayAdapter设计用于ArrayLists(和arrays []),虽然它不支持View绑定,你只需覆盖getView()

答案 3 :(得分:0)

我相信link可以帮助你。 同时下载示例源代码。