我正在尝试使用自定义ArrayAdapter和自定义数据对象填充ListFragment。持久远程存储是一个Parse数据集,该数据集映射到我创建的自定义Data对象。问题是我无法在馈入arrayadapter的数组列表中填充来自Parse的查询响应。当我对虚拟数据执行此操作时,它可以正常工作。当我使用列表时,它不会。
希望对此有所帮助。
片段:
private List<DataItem> itemsList; //Initialize a list of Data Items type
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
itemsList = new ArrayList<DataItem>();
//Parse Initialised here
ParseQuery<ParseObject> query = ParseQuery.getQuery("object");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objectList, ParseException e) {
if(e == null){
addItem(objectList);
} else {
Log.d("List Activity",e.getMessage());
}
}
});
//Static Data Population - This works fine
DataItem item1 = new DataItem();
item.setName("SampleName");
item.setPhone("12345678");
item.setAddress("Mumbai");
//Set Adapter
ListAdapter adapter = new ListAdapter(getActivity(), itemsList);
setListAdapter(adapter);
adapter.notifyDataSetChanged();
}
public void addItem(List<ParseObject> objectList){
for(int i =0; i< objectList.size(); i++){
DataItem item = new DataItem();
item.setName(objectList.get(i).getString("name").toString());
item.setPhone(objectList.get(i).getString("phone").toString());
item.setAddress(objectList.get(i).getString("address").toString());
itemsList.add(item); //This is not working
}
}
您需要在'done'和'addItem'之间为JSON对象提供平面处理程序...
原因是查询返回的平面字符串包含JsonRoot对象->包含“结果”数组,在调用从Json.Results.Array中的条目创建Map对象的方法之前,必须明确解开“结果”数组。 ..
添加一些获取平坦的Json对象并对其进行迭代的结果...
public void getList(JsonNode root){
String _mimeTyp;
ArrayNode array = (ArrayNode) root.path("results");
for(JsonNode node : array){
HashMap<String, String> map = new HashMap<String, String>();
map.put("id", node.path("objectId").getTextValue());
map.put("msg", node.path("msg").getTextValue());
...
$myArray<HashMap>.add(map);
然后将最后的杂草喂给lazyAdapter。
list=(ListView)findViewById(R.id.list);
adapter=new LazyAdapter(myact, $myArray, new AQuery(myact));
list.setAdapter(adapter);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句