我有一个Globals.mylist=new arraylist<hashmap<String,String>>
mylist和hashmap map1来保存我的产品订单,然后再将它们插入到数据库中。这部分是我将产品订单插入Globals.mylist:
if (Globals.mylist == null) {
Globals.mylist = new ArrayList<HashMap<String, String>>();
}
id = bun.getLong("id");
Id=String.valueOf(id);
brand = bun.getString("brand");
type = bun.getString("type");
qty = bun.getString("qty");
if (Globals.mylist.size() == 0) {
map1.put("one", Id);
map1.put("two", brand);
map1.put("three", type);
map1.put("four", qty);
Globals.mylist.add(map1);
} else {
int j = Globals.mylist.size();
map1.put("one", Id);
map1.put("two", brand);
map1.put("three", type);
map1.put("four", qty);
Globals.mylist.add(j,map1);
}
这部分是我尝试从Globals.mylist获取字符串到sqlite
for (int i=0; i<Globals.mylist.size();i++) {
map1=Globals.mylist.get(i);
map1.get(Id);
map1.get(qty);
orderdtl = dataSource.createorderdtl(orderid, Id, qty);
}
但是我收到了一个错误。它告诉我Id=0 and qty=null
。我尝试搜索引用,但我无法实现它们。如何从Globals.mylist
获取字符串id和字符串数量以插入到sqlite中。
答案 0 :(得分:1)
要从Map
中检索值,您需要它的密钥。
以前在您的代码中,您使用...
生成了地图map1.put("one", Id);
map1.put("two", brand);
map1.put("three", type);
map1.put("four", qty);
它为您提供了密钥。要重新标记值,您需要使用适当的密钥,例如......
map1=Globals.mylist.get(i);
String id = map1.get("one");
String qty = map1.get("four");
您可以查看The Map Interface了解更多详情
答案 1 :(得分:0)
使用LinkedHashMap会更加简单,它可以按插入顺序进行迭代。
答案 2 :(得分:0)
首先,我认为我们没有足够的代码。但是.get(int)函数返回一个对象,它实际上并没有做任何事情,所以你需要做类似System.out.println(map1.get(Id))的事情。
答案 3 :(得分:0)
您的问题是,您正试图使用value
来获取地图的value
,这不是它的实现方式。
map1.get(Id);
map1.get(qty);
不正确。
您需要致电Map#get
key
,value
您需要检索String
。您将获得类型String Id = map1.get("one");
String qty = map1.get("four");
的值,因为您已声明它,因此在相同类型的变量中检索它。
{{1}}
调用它的正确方法。
答案 4 :(得分:0)
在添加要映射的内容时,您使用键值对。
map.put(key,value);
当你想获得你应该使用的字符串时;
map.get(键);