如果我想拥有一个ExpandableListView,它从服务器(JSON数组)的响应中为其组及其子级获取数据。
我该怎么做?
我知道这里有SimpleCursorTreeAdapter,但是它仅用于游标,而我以前使用过它,但是我需要该适配器的任何等效项才能与JSON数组一起使用
这是获取groupItems的功能
protected void BindOrederItemList(final int order_id)
{
// TODO Auto-generated method stub
//select all categories from order items where order_id =??
//select items where category=??
String Url="http://192.168.3.113/mywebservices.php?op=GetOrderCategory&lang_id=1&order_id="+order_id;
GetNetworkData.OnPostExecuteListener listener=new GetNetworkData.OnPostExecuteListener()
{
@Override
public void onPostExecute(String result) {
// TODO Auto-generated method stub
if (result!=null)
{
try
{
JSONArray jArray = new JSONArray(result);
HashMap<String, String> Catmap = new HashMap<String, String>();
// ArrayList<Integer> category=new ArrayList<Integer>();
for (int i = 0; i < jArray.length(); i++)
{
JSONObject e = jArray.getJSONObject(i);
id=e.getInt("order_id");
cat_name=e.getString("cat_name");
cat_id=e.getInt("cat_id");
Catmap.put("cat_id",String.valueOf(cat_id));
Catmap.put("cat_name", cat_name);
catItemsList.add(Catmap);
}
Log.i("Insid For Loop", "Group size = "+catItemsList.toArray());
// Log.i("Bind item", "CAT SIZE "+catItemsList.size());
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
};
try
{
GetNetworkData task = new GetNetworkData(Url,null,listener);
task.execute();
}
catch(Exception e)
{
e.printStackTrace();
}
}
谢谢
最佳答案
一种方法是使用SimpleExandableListAdapter。
在这种情况下,您将必须首先获取JSON数据,然后将其存储为地图列表。您可以使用AsyncTaskLoader完成操作,在其中提取并重新打包数据,然后在后台创建适配器的新实例,然后将其交换到ExandableListView中。