我有一个带有键值对的TreeMap,键是一个表示某种类型的String。基于此,我可以添加另外四种类型的属性作为列表。现在,对于< | key |的每个条目,list | string>我想在列表视图中填充一行。我应该制作什么类型的适配器。此外,我必须考虑到我必须覆盖getView()方法,因为我想根据键值显示不同的图片。任何提示或教程?
答案 0 :(得分:0)
你可以使用简单的基础适配器。在该适配器中,在get view方法中,你可以使用另一个列表适配器来扩充该列表
答案 1 :(得分:0)
您可以轻松使用BaseAdapter
。这里的技巧是从指定索引处的映射中获取键值对。这并不困难 - 如果你的地图被排序,你每次都会获得相同的订单。你会有这样的事情:
public class MapAdapter<K, V> extends BaseAdapter {
Context context;
Map<K, V> data;
public MapAdapter(Context _context, Map<K, V> _data) {
context = _context;
data = _data;
}
public int getCount() { return data.size(); }
public Object getItem(int position) {
K key = map.keySet().toArray()[position];
V value = map.get(key);
return AbstractMap.SimpleEntry(key, value);
}
public View getView(int position, View convertView, ViewGroup parent) {
AbstractMap.SimpleEntry<K, V> entry = (AbstractMap.SimpleEntry<K, V>)getItem(position);
K key = entry.getKey();
V value = entry.getValue();
MyRowView rowView = (MyRowView)convertView;
if(rowView == null) {
rowView = ... //create your view by inflating or otherwise
}
//Now you have the view and details of your key and value - populate the row
...
return rowView;
}
}