Java hashmap在android中以可扩展的listview显示数据

Java hashmap在android中以可扩展的listview显示数据,java,android,listview,hashmap,expandablelistview,Java,Android,Listview,Hashmap,Expandablelistview,我正试图在android服务器上以可扩展的列表视图显示数据。我正在尝试在AsyncTask中实现hashmap。请参阅以下代码 private class HttpAsyncTaskReports extends AsyncTask<String, Void, String> { private ProgressDialog dialog; public HttpAsyncTaskReports(ExpandableActivity activity) {

我正试图在android服务器上以可扩展的列表视图显示数据。我正在尝试在
AsyncTask
中实现hashmap。请参阅以下代码

private class HttpAsyncTaskReports extends AsyncTask<String, Void, String> {
    private ProgressDialog dialog;
    public HttpAsyncTaskReports(ExpandableActivity activity) {
        dialog = new ProgressDialog(activity);
    }

    @Override
    protected String doInBackground(String... urls) {
        return GET(urls[0]);
    }

    @Override
    protected void onPreExecute() {
        // Removes all markers, overlays, and polylines from the map.
        dialog.setMessage("Loading reports, please wait.");
        dialog.show();
    }

    @Override
    protected void onPostExecute(String result) {

        if (dialog.isShowing()) {
            dialog.dismiss();
        }

        listDataHeader = new ArrayList<String>();
        listDataChild = new HashMap<String, List<String>>();

        // Header, Child data

        List<String> top250 = new ArrayList<String>();
        top250.add("The Shawshank Redemption");
        top250.add("The Godfather");

        try {
            JSONArray jArray = new JSONArray(result);

            JSONObject jsonobject = jArray.getJSONObject(0);
            JSONArray jsonAssets = jsonobject.getJSONArray("last_data");
            Log.d("LASTLATLONG", result);

            for (i = 0; i < jsonAssets.length(); i++) {
                JSONObject nlmJsonObject = jsonAssets.getJSONObject(i);
                JSONObject lastData_JsonObject = nlmJsonObject.getJSONObject("last_data");
                JSONObject lastData_timeJsonObject = lastData_JsonObject.getJSONObject("time");
//              JSONObject lastData_dateJsonObject = lastData_timeJsonObject.getJSONObject("$date");
//              JSONObject lastData_speedJsonObject = lastData_JsonObject.getJSONObject("speed");

                // Adding child data
                listDataHeader.add(lastData_timeJsonObject.getString("$date"));
                listDataChild.put(listDataHeader.get(i), top250);
            }
        } catch (JSONException e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(), "Server Error :( Please wait!", Toast.LENGTH_LONG).show();
        }
    }
}
这里是错误

java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3124)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3233)
    at android.app.ActivityThread.access$1000(ActivityThread.java:197)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:145)
    at android.app.ActivityThread.main(ActivityThread.java:6856)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
    at gps.finder.com.findermaterial.ExpandableListAdapter.getGroupCount(ExpandableListAdapter.java:75)
    at android.widget.ExpandableListConnector.getCount(ExpandableListConnector.java:397)
    at android.widget.ListView.setAdapter(ListView.java:502)
    at android.widget.ExpandableListView.setAdapter(ExpandableListView.java:604)
    at gps.finder.com.findermaterial.ExpandableActivity.onCreate(ExpandableActivity.java:102)
    at android.app.Activity.performCreate(Activity.java:6550)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3077)
谁能告诉我该如何解决这个问题

如果我使用下面这样的函数来列出数据,它会成功地工作

private void prepareListData() {
    listDataHeader = new ArrayList<String>();
    listDataChild = new HashMap<String, List<String>>();

    // Adding child data
    listDataHeader.add("Top 50");
    listDataHeader.add("Now Showing");
    listDataHeader.add("Coming Soon..");

    // Adding child data
    List<String> top250 = new ArrayList<String>();
    top250.add("The Shawshank Redemption");
    top250.add("The Godfather");
    top250.add("The Godfather: Part II");
    top250.add("Pulp Fiction");
    top250.add("The Good, the Bad and the Ugly");
    top250.add("The Dark Knight");
    top250.add("12 Angry Men");

    List<String> nowShowing = new ArrayList<String>();
    nowShowing.add("The Conjuring");
    nowShowing.add("Despicable Me 2");
    nowShowing.add("Turbo");
    nowShowing.add("Grown Ups 2");
    nowShowing.add("Red 2");
    nowShowing.add("The Wolverine");

    List<String> comingSoon = new ArrayList<String>();
    comingSoon.add("2 Guns");
    comingSoon.add("The Smurfs 2");
    comingSoon.add("The Spectacular Now");
    comingSoon.add("The Canyons");
    comingSoon.add("Europa Report");

    listDataChild.put(listDataHeader.get(0), top250); // Header, Child data
    listDataChild.put(listDataHeader.get(1), nowShowing);
    listDataChild.put(listDataHeader.get(2), comingSoon);
}
private void prepareListData(){
listDataHeader=新的ArrayList();
listDataChild=newHashMap();
//添加子数据
添加(“前50名”);
添加(“现在显示”);
添加(“即将推出…”);
//添加子数据
List top250=新的ArrayList();
top250.添加(“肖申克的救赎”);
添加(“教父”);
top250.添加(“教父:第二部分”);
top250.添加(“低俗小说”);
添加(“好、坏、丑”);
添加(“黑暗骑士”);
添加(“12个愤怒的男人”);
List nowShowing=新建ArrayList();
现在显示。添加(“变戏法”);
添加(“卑鄙的我2”);
现在显示。添加(“Turbo”);
现在显示。添加(“成年人2”);
现在显示。添加(“红色2”);
现在显示。添加(“狼獾”);
List comingSoon=新建ArrayList();
很快就来。添加(“2支枪”);
很快就来。添加(“蓝精灵2”);
即将到来。添加(“现在的壮观”);
即将到来。添加(“峡谷”);
即将出版。添加(“欧罗巴报告”);
listDataChild.put(listDataHeader.get(0),top250);//头,子数据
listDataChild.put(listDataHeader.get(1),现在显示);
listDataChild.put(listDataHeader.get(2),即将出现);
}
但我需要使用从服务器检索的数据来实现hashmap


我感谢你的建议。提前感谢。

适配器类在哪里???
listDataHeader.add(i,lastData\u timeJsonObject.getString($date));listDataChild.put(listDataHeader.get(i),top250)尝试此操作。错误发生在适配器类中。请张贴code@NezSpencer我添加了ExpandableListAdapter类。@java8。请查看ExpandableListAdapter类。这里我只能传递一个值。其中是适配器类???
listDataHeader.add(I,lastData_timeJsonObject.getString($date));listDataChild.put(listDataHeader.get(i),top250)尝试此操作。错误发生在适配器类中。请张贴code@NezSpencer我添加了ExpandableListAdapter类。@java8。请查看ExpandableListAdapter类。这里我只能传递一个值。
private void prepareListData() {
    listDataHeader = new ArrayList<String>();
    listDataChild = new HashMap<String, List<String>>();

    // Adding child data
    listDataHeader.add("Top 50");
    listDataHeader.add("Now Showing");
    listDataHeader.add("Coming Soon..");

    // Adding child data
    List<String> top250 = new ArrayList<String>();
    top250.add("The Shawshank Redemption");
    top250.add("The Godfather");
    top250.add("The Godfather: Part II");
    top250.add("Pulp Fiction");
    top250.add("The Good, the Bad and the Ugly");
    top250.add("The Dark Knight");
    top250.add("12 Angry Men");

    List<String> nowShowing = new ArrayList<String>();
    nowShowing.add("The Conjuring");
    nowShowing.add("Despicable Me 2");
    nowShowing.add("Turbo");
    nowShowing.add("Grown Ups 2");
    nowShowing.add("Red 2");
    nowShowing.add("The Wolverine");

    List<String> comingSoon = new ArrayList<String>();
    comingSoon.add("2 Guns");
    comingSoon.add("The Smurfs 2");
    comingSoon.add("The Spectacular Now");
    comingSoon.add("The Canyons");
    comingSoon.add("Europa Report");

    listDataChild.put(listDataHeader.get(0), top250); // Header, Child data
    listDataChild.put(listDataHeader.get(1), nowShowing);
    listDataChild.put(listDataHeader.get(2), comingSoon);
}