Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中带有JSON的ExpandableListView-列表错误_Android_Json_Expandablelistview - Fatal编程技术网

android中带有JSON的ExpandableListView-列表错误

android中带有JSON的ExpandableListView-列表错误,android,json,expandablelistview,Android,Json,Expandablelistview,尝试使用JSON解析生成ExpandableListView时出错 我只是尝试将数据从JSON解析到单个子组,但失败了。任何人解决它,这将有助于我。我们将不胜感激 项目不包含错误,但部署后emulator强制关闭 我的代码 您的问题可能是在JSON数据可用之前填充了ExpandableListView。尝试在onPostExecute函数中调用prepareListData函数 这可能需要一段时间,您的ExpandableListView将为空,如果在这样做之后您的ExpandableListV

尝试使用JSON解析生成ExpandableListView时出错

我只是尝试将数据从JSON解析到单个子组,但失败了。任何人解决它,这将有助于我。我们将不胜感激

项目不包含错误,但部署后emulator强制关闭

我的代码
您的问题可能是在JSON数据可用之前填充了
ExpandableListView
。尝试在
onPostExecute
函数中调用
prepareListData
函数

这可能需要一段时间,您的
ExpandableListView
将为空,如果在这样做之后您的ExpandableListView没有被填充,请尝试调用
expListView.invalidateViews


我看到的另一个问题是您没有初始化
str
属性,这可能是您的NPE的原因。

在上面的代码中,您有以下内容:

for(int i = 0; i < contacts.length(); i++){
    JSONObject c = contacts.getJSONObject(i);
    String id = c.getString(TAG_ID);
    String name = c.getString(TAG_NAME);
    str[i]=c.getString(TAG_NAME);
    String email = c.getString(TAG_EMAIL);
    String address = c.getString(TAG_ADDRESS);
    String gender = c.getString(TAG_GENDER);
如果可能,尝试将其初始化为某个值,然后将该值存储到数组中

而且以后不能增加或减少数组大小,如果改用
arraylist
,那就更好了


此外,即使在
prepareList()
方法中,当字符串未初始化为上面几行提到的某个值时,您也在访问字符串的长度。

您收到的错误是什么?Forceclosed by Emulator添加logcat log请:)您尚未初始化str数组,这就是为什么只添加
if(str!=null)
之前的(int x=0;xJson数据在prepareListData执行之前使用DownloadJSON函数调用,因此JSON数据可用,但解析后的数据没有填充到Expandablelistview的子列表中。@Zozelfefelfo这是错误的地方,您正在启动一个AsyncTask,这在另一个线程中工作,您的UI线程可以在执行之前完成其功能异步任务启动。在
doInBackground
函数中添加一个日志并检查它。因此,在我的代码中编辑它,在我做错的地方,@zozelfelfohow如何用动态值初始化?这里您的示例代码包含100。这只是一个示例。由于无法从前面预定义数组的大小,请使用数组列表。在这里,您可以MPL必须将项目添加到数组列表中。正确,但其他两个子列表的数组列表已手动添加,我创建的第一个arraylist和我从tat str变量中获取的tat值。如果str是动态的,请使用
arraylist
for(int x=0;x<str.length;x++)
{
     top250.add(str[x]);
}
02-07 06:47:06.231: E/AndroidRuntime(2490): FATAL EXCEPTION: main
02-07 06:47:06.231: E/AndroidRuntime(2490): Process: info.androidhive.expandablelistview, PID: 2490
02-07 06:47:06.231: E/AndroidRuntime(2490): java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.expandablelistview/info.androidhive.expandablelistview.MainActivity}: java.lang.NullPointerException
02-07 06:47:06.231: E/AndroidRuntime(2490):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at android.app.ActivityThread.access$700(ActivityThread.java:135)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at android.os.Looper.loop(Looper.java:137)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at android.app.ActivityThread.main(ActivityThread.java:4998)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at java.lang.reflect.Method.invokeNative(Native Method)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at java.lang.reflect.Method.invoke(Method.java:515)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at dalvik.system.NativeStart.main(Native Method)
02-07 06:47:06.231: E/AndroidRuntime(2490): Caused by: java.lang.NullPointerException
02-07 06:47:06.231: E/AndroidRuntime(2490):     at info.androidhive.expandablelistview.MainActivity.prepareListData(MainActivity.java:208)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at info.androidhive.expandablelistview.MainActivity.onCreate(MainActivity.java:60)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at android.app.Activity.performCreate(Activity.java:5243)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-07 06:47:06.231: E/AndroidRuntime(2490):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)
02-07 06:47:06.231: E/AndroidRuntime(2490):     ... 11 more
02-07 06:47:06.511: D/dalvikvm(2490): GC_FOR_ALLOC freed 201K, 9% free 2984K/3260K, paused 28ms, total 28ms
02-07 06:47:08.771: I/Process(2490): Sending signal. PID: 2490 SIG: 9
for(int i = 0; i < contacts.length(); i++){
    JSONObject c = contacts.getJSONObject(i);
    String id = c.getString(TAG_ID);
    String name = c.getString(TAG_NAME);
    str[i]=c.getString(TAG_NAME);
    String email = c.getString(TAG_EMAIL);
    String address = c.getString(TAG_ADDRESS);
    String gender = c.getString(TAG_GENDER);
str[] = new String[100]; // for example