我在我的主类中定义了一个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"));
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);
我的第二个标签是MapView,我能够成功切换标签,在标签布局中显示地图以及平移和放大。缩放等。
我需要帮助的地方是了解如何访问主类中“mylist”ArrayList / Hashmap中的“lat”和“long”字符串(注意:我声明了主类中的ArrayList / Hashmap,然后在所有活动中共享它,因为它是一个非常大的XML提要,我不想重新加载数据或在内存中有太多对象。
我的目标是将这些纬度/经度坐标转换为GeoPoints并使用地图叠加显示它们;我已经能够使用硬编码到我的Map活动类中的固定GeoPoints来做到这一点。但是,正如我上面所写,我现在需要替换这些“固定的”GeoPoints,而是使用“mylist”ArrayList / Hashmap的内容。
我是编程Java / Android的新手(&lt; 1个月经验),所以我希望这一切都有意义吗?我希望有人能够解释/举例说明我如何访问数据......我已尝试实施各种措施,例如“迭代”,但它还没有工作。
答案 0 :(得分:2)
如果我正确理解了您的问题,那么您正在寻找一种迭代的方法ArrayList
?如果是这样,这个例子应该让你开始:
Iterator itr = myList.iterator();
while (itr.hasNext()) {
HashMap<String, String> map = (HashMap<String, String>) itr.next();
String lat = (String) map.get("lat");
String lon = (String) map.get("long");
String id = (String) map.get("id");
Log.d(TAG, "Lat is: " +lat);
Log.d(TAG, "Lon is: " +lon);
Log.d(TAG, "ID is: " +id);
}
答案 1 :(得分:0)
你可以做几件事。您可以将Feed作为静态变量。如果它是静态的,您可以通过编写MyActivity.myList
来从任何地方访问它。
此外,您可以通过意图传递XML字符串:
Intent i = new Intent(this, ActivityToLaunch.class);
i.putExtra("xml", xml);
startActivity(i);
然后使用:
检索它String xml = getIntent().getExtras().getString("xml");
如果文件非常大,另一个想法是将xml文件保存到SD卡并将其加载到每个活动中。
完成这些后,你可以像这样迭代遍历ArrayList
for(HashMap<String,String> map: myList)
然后以几种方式遍历每个HashMap:
for(String s: map.keyset())
允许您通过键获取值,或者您可以像这样直接遍历值:
for(String s: map.values())