当我创建这个对象时,我喜欢这样:
random_fields= new ArrayList<HashMap<String, String>>();
try {
// Getting Array of fields
JSONArray fields= json.getJSONArray("fields");
// Looping through All fields
for(int i = 0; i < fields.length(); i++) {
JSONObject jobj = fields.getJSONObject(i);
// Creating new HashMap
HashMap<String, String> map_aux = new HashMap<String, String>();
// Adding each child node to HashMap key => value
map_aux.put("field_id", jobj.getString("field_id"));
map_aux.put("field_text", jobj.getString("field_text"));
}
// Adding HashList to ArrayList
random_fields.add(map_aux);
}
然后当我尝试访问Hashmaps的Arraylist中的每一个字段时...我喜欢这样:
例如:
editText1.setText(random_fields.get(0).get("field_text"));
它给了我一个Java空指针错误...但如果我这样做:
System.out.println(random_challenges.get(0).get("field_text"));
它工作正常,它在我的调试控制台中打印..字段文本正确..哪个可以解决?
答案 0 :(得分:0)
您设置editText的代码看起来正确。我在这里可以看到的唯一区别是你在System.out.println方法中使用random_challenges,在setText方法中使用random_fields。
答案 1 :(得分:0)
你想提供一些实际的代码文件(不仅仅是片段),我可以仔细观察,但是根据你提供的内容,我会冒昧地猜测发生了什么,你认为你填充哈希值的值map(在for循环中)超出范围并被清理,留下NULL引用。
你控制台,因为它持续存在,保持数据实例化足够长的时间让你调试打印它。