如何只显示哈希映射的Arraylist中的某些条目(例如收藏夹)?

时间:2012-03-25 15:32:43

标签: arraylist hashmap partial-views subset

我在我的主类中定义了一个ArrayList,我从XML feed中加载数据并创建包含不同活动的各种标签:

static ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

我将地图条目放入HashMaps的ArrayList中的示例:

for (int i = 0; i < 10; i++) {      
  HashMap<String, String> map = new HashMap<String, String>();  
  Element e = (Element)nodes.item(i);
  map.put("id", XMLfunctions.getValue(e, "id"));
  map.put("lat", "Lat: " + XMLfunctions.getValue(e, "lat"));
  map.put("long", "Long: " + XMLfunctions.getValue(e, "long"));
  map.put("favourite", [lookup of true/false favourite status and insert here]);
  mylist.add(map);
}

第一个选项卡是ListViewActivity,我可以通过引用主类中的ArrayList成功地创建列表:class.mylist通过列表适配器:

ListAdapter adapter = new SimpleAdapter(
                      ListViewActivity.this,
                      main.mylist, R.layout.list,
                      new String[] { "id", "lat", "long" }, 
                      new int[] { R.id.item_id, R.id.item_lat, R.id.item_long });                   
setListAdapter(adapter);

我遇到的情况如下......

我有另一个标签'收藏夹',在我的FavouriteActivity中,我想显示一个Listview,只显示“mylist”中“最喜欢”状态为TRUE的那些条目。

换句话说,根据列表中每个条目的特定条件显示mylist的子集。

这可能吗?我已经尝试过克隆,迭代和谁知道什么,但我无法弄明白......任何建议(有一些小例子)都会非常感激!

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题你可以这样做:

ArrayList进行迭代,对于每个HashMap对象迭代其keys,以匹配Map中的收藏条目:

for (Map map : myList) {
    for (String key : map.keySet()) {
         If("favourite".equals(key)) {
              // ...
          }
    }
}