Android 动态存储字符串并将其应用于listview时,应用程序崩溃

Android 动态存储字符串并将其应用于listview时,应用程序崩溃,android,listview,android-listview,android-arrayadapter,Android,Listview,Android Listview,Android Arrayadapter,我在一个字符串数组中排列一堆注释,因为我想在ListView中使用该字符串数组,但我不知道为什么我的应用程序会崩溃 例如,如果我使用以下字符串数组,它不会崩溃: String[] values = new String[] { "value1", "value2", "value3", "value4" }; 但当我尝试为其动态添加数据时 String[] Comments=new Strin

我在一个字符串数组中排列一堆注释,因为我想在ListView中使用该字符串数组,但我不知道为什么我的应用程序会崩溃

例如,如果我使用以下字符串数组,它不会崩溃:

String[] values = new String[] { "value1",
                 "value2",
                 "value3",
                 "value4" };
但当我尝试为其动态添加数据时

String[] Comments=new String[20];
它显示了一个错误

protected void onPostExecute(String result) {

            super.onPostExecute(result);

            JSONObject jsonObject;
            try {
                jsonObject = new JSONObject(result);
                for (int i = 1; i <= jsonObject.length(); i++) {

                    JSONObject jsonInnerObject = jsonObject
                            .getJSONObject(Integer.toString(i));

                    Comment = jsonInnerObject.getString("comment_text");
                    Comment_owner = jsonInnerObject.getString("comment_owner");

                    Comments[i] = Comment;

                }
            } catch (JSONException e) {

                e.printStackTrace();
            }


                ArrayAdapter<String> adapter = new ArrayAdapter<String>(showStatus.this,
                    android.R.layout.simple_list_item_1, android.R.id.text1,
                    Comments);

            listView.setAdapter(adapter);
        }
原木猫

05-26 23:45:31.807: E/AndroidRuntime(16334): FATAL EXCEPTION: main
05-26 23:45:31.807: E/AndroidRuntime(16334): java.lang.NullPointerException
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.AbsListView.obtainView(AbsListView.java:2340)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.ListView.makeAndAddView(ListView.java:1793)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.ListView.fillDown(ListView.java:678)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.ListView.fillFromTop(ListView.java:739)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.ListView.layoutChildren(ListView.java:1638)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.AbsListView.onLayout(AbsListView.java:2170)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.View.layout(View.java:13846)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.ViewGroup.layout(ViewGroup.java:4466)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.View.layout(View.java:13846)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.ViewGroup.layout(ViewGroup.java:4466)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.View.layout(View.java:13846)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.ViewGroup.layout(ViewGroup.java:4466)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.View.layout(View.java:13846)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.ViewGroup.layout(ViewGroup.java:4466)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.View.layout(View.java:13846)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.ViewGroup.layout(ViewGroup.java:4466)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2168)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1926)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1140)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4726)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:747)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.Choreographer.doCallbacks(Choreographer.java:567)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.Choreographer.doFrame(Choreographer.java:536)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:733)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.os.Handler.handleCallback(Handler.java:615)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.os.Looper.loop(Looper.java:153)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at android.app.ActivityThread.main(ActivityThread.java:5000)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at java.lang.reflect.Method.invokeNative(Native Method)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at java.lang.reflect.Method.invoke(Method.java:511)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
05-26 23:45:31.807: E/AndroidRuntime(16334):    at dalvik.system.NativeStart.main(Native Method)

您最好使用
ArrayList
而不是
数组,因为列表是动态的

ArrayList<String> list = ArrayList<String>();
JSONObject jsonObject;
        try {
            jsonObject = new JSONObject(result);
            for (int i = 1; i <= jsonObject.length(); i++) {

                JSONObject jsonInnerObject = jsonObject
                        .getJSONObject(Integer.toString(i));

                Comment = jsonInnerObject.getString("comment_text");
                Comment_owner = jsonInnerObject.getString("comment_owner");
                list.add(Comment);

            }
        } catch (JSONException e) {

            e.printStackTrace();
        }


 ArrayAdapter<String> adapter = new ArrayAdapter<String>(showStatus.this,
                android.R.layout.simple_list_item_1, android.R.id.text1,
                list);

 listView.setAdapter(adapter);
ArrayList list=ArrayList();
JSONObject JSONObject;
试一试{
jsonObject=新的jsonObject(结果);

对于(inti=1;我发布了相关的stacktrace plsAlso,如果您有JSON或该结构的示例,这会有所帮助too@Raghunandan希望能有帮助。@shabeer:我们仍然需要显示stacktrace@shabeer使用arraylist代替arraylist。将项目添加到列表中,并将arrayadapter中的注释替换为list。适配器看起来很稳定ht
ArrayList<String> list = ArrayList<String>();
JSONObject jsonObject;
        try {
            jsonObject = new JSONObject(result);
            for (int i = 1; i <= jsonObject.length(); i++) {

                JSONObject jsonInnerObject = jsonObject
                        .getJSONObject(Integer.toString(i));

                Comment = jsonInnerObject.getString("comment_text");
                Comment_owner = jsonInnerObject.getString("comment_owner");
                list.add(Comment);

            }
        } catch (JSONException e) {

            e.printStackTrace();
        }


 ArrayAdapter<String> adapter = new ArrayAdapter<String>(showStatus.this,
                android.R.layout.simple_list_item_1, android.R.id.text1,
                list);

 listView.setAdapter(adapter);