列表视图中的Android,而从服务器获取数据 [英] Listview in Android while getting data from a server
本文介绍了列表视图中的Android,而从服务器获取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想填充数据到列表视图异步
我从检索服务器数据作为JSON响应
MainActivity.java
公共类MainActivity延伸活动{ // URL使请求 私有静态字符串URL =http://54.218.73.244:7002/; ListView的yourListView; 清单<项目> yourData =新的ArrayList<项目>(); ProgressDialog progressDialog; @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
yourListView =(ListView控件)findViewById(R.id.listViewID); //实例化ProgressDialog与onCreate方法
progressDialog =新ProgressDialog(MainActivity.this);
新ParsingAsync()执行(); } 私有类ParsingAsync扩展的AsyncTask<太虚,太虚,太虚>
{ @覆盖
在preExecute保护无效(){
// TODO自动生成方法存根
super.on preExecute();
progressDialog = ProgressDialog.show(MainActivity.this,,请等待,真,假);
} @覆盖
保护无效doInBackground(虚空...... PARAMS){
// TODO自动生成方法存根
//创建一个JSON解析器实例-----从Android的使用JSON解析器
JSONObjParser jParser =新JSONObjParser(); //获取JSON字符串URL从------二手JSON在Android阵
JSONArray JSON = jParser.getJSONFromUrl(URL); 清单<项目> yourData =新的ArrayList<项目>();
尝试{
的for(int i = 0; I< json.length();我++)
{
JSONObject的C = json.getJSONObject(我);在Android //二手JSON对象 串RESTAURANT_NAME = c.getString(restaurantNAME); yourData.add(新项目(RESTAURANT_NAME)); }
}赶上(JSONException E){
// TODO自动生成catch块
e.printStackTrace();
} 返回null; } @覆盖
保护无效onPostExecute(虚空结果){
// TODO自动生成方法存根
super.onPostExecute(结果);
progressDialog.dismiss(); ListAdapter customAdapter =新ListAdapter(MainActivity.this,R.layout.itemlistrow,yourData);
yourListView.setAdapter(customAdapter); }
}
}
JSONObjParser.java
公共类JSONObjParser { 静态InputStream为= NULL;
静态JSONArray jObj = NULL;
静态JSON字符串=; //构造
公共JSONObjParser(){ } 公共JSONArray getJSONFromUrl(字符串URL){ //使HTTP请求
尝试{
// defaultHttpClient
DefaultHttpClient的HttpClient =新DefaultHttpClient();
HTTPGET HTTPGET =新HTTPGET(URL); HTT presponse HTT presponse = httpClient.execute(HTTPGET);
HttpEntity httpEntity = HTT presponse.getEntity();
是= httpEntity.getContent(); }赶上(UnsupportedEncodingException五){
e.printStackTrace();
}赶上(ClientProtocolException E){
e.printStackTrace();
}赶上(IOException异常五){
e.printStackTrace();
} 尝试{
读者的BufferedReader =新的BufferedReader(新的InputStreamReader(
是,ISO-8859-1),8);
StringBuilder的SB =新的StringBuilder();
串线= NULL;
而((行= reader.readLine())!= NULL){
sb.append(行+\\ n);
}
is.close();
JSON = sb.toString();
}赶上(例外五){
Log.e(缓冲区错误,错误转换结果+ e.toString());
} //尝试分析字符串到一个JSON对象
尝试{
jObj =新JSONArray(JSON); }赶上(JSONException E){
Log.e(JSON解析器,错误分析数据+ e.toString());
} //返回JSON字符串
返回jObj; }
}
日志:
20 08-23:43:59.442:W / dalvikvm(1311):主题ID = 6:自旋暂停#1主题ID = 9(PCF = 0)
08-23 20:43:59.442:D / dalvikvm(1311):临时移动TID 1320 FG(为0)
08-23 20:43:59.442:D / dalvikvm(1311):暂不上调优先考虑TID 1320(10 - 大于0)
08-23 20:43:59.528:W / dalvikvm部(1311):主题ID = 6:1085年毫秒暂停解析旋
08-23 20:43:59.528:D / dalvikvm部(1311):1320恢复政策,以0
08-23 20:43:59.528:D / dalvikvm(1311):在1320至10恢复优先级
08-23 20:44:02.460:E / JSON解析器(1311):错误分析数据org.json.JSONException:值{\"restaurants\":[{\"restaurantID\":1,\"restaurantNAME\":\"CopperChimney\"},{\"restaurantID\":2,\"restaurantNAME\":\"Aroy\"},{\"restaurantID\":3,\"restaurantNAME\":\"MarkBoulevard\"},{\"restaurantID\":4,\"restaurantNAME\":\"Indian\"}],\"RestaurantTimings\":[{\"_id\":1,\"RestaurantTime\":\"8pm至晚上11时},{_ ID:2,RestaurantTime:晚上10时到下午12时},{_ ID:3,RestaurantTime:下午11时至晚上9时},{_ ID:4,RestaurantTime :类型org.json.JSONObject的晚上10点至下午5点}]}不能转换为JSONArray
08-23 20:44:02.470:W / dalvikvm部(1311):主题ID = 9:螺纹未捕获的异常(组= 0x40015560)退出
08-23 20:44:02.489:E / AndroidRuntime(1311):致命异常:AsyncTask的#1
08-23 20:44:02.489:E / AndroidRuntime部(1311):了java.lang.RuntimeException:执行doInBackground发生错误()
08-23 20:44:02.489:E / AndroidRuntime(1311):在android.os.AsyncTask $ 3.done(AsyncTask.java:200)
08-23 20:44:02.489:E / AndroidRuntime部(1311):在java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:274)
08-23 20:44:02.489:E / AndroidRuntime部(1311):在java.util.concurrent.FutureTask.setException(FutureTask.java:125)
08-23 20:44:02.489:E / AndroidRuntime部(1311):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:308)
08-23 20:44:02.489:E / AndroidRuntime(1311):在java.util.concurrent.FutureTask.run(FutureTask.java:138)
08-23 20:44:02.489:E / AndroidRuntime(1311):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
08-23 20:44:02.489:E / AndroidRuntime部(1311):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:581)
08-23 20:44:02.489:E / AndroidRuntime(1311):在java.lang.Thread.run(Thread.java:1019)
08-23 20:44:02.489:E / AndroidRuntime部(1311):因:显示java.lang.NullPointerException
08-23 20:44:02.489:E / AndroidRuntime部(1311):在com.project.findmybuffet.MainActivity $ ParsingAsync.doInBackground(MainActivity.java:78)
08-23 20:44:02.489:E / AndroidRuntime(1311):在com.project.findmybuffet.MainActivity $ ParsingAsync.doInBackground(MainActivity.java:1)
08-23 20:44:02.489:E / AndroidRuntime(1311):在android.os.AsyncTask $ 2.call(AsyncTask.java:185)
08-23 20:44:02.489:E / AndroidRuntime(1311):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:306)
08-23 20:44:02.489:E / AndroidRuntime(1311):... 4个
08-23 20:44:04.531:E /窗口管理器(1311):活动com.project.findmybuffet.MainActivity渗漏窗口com.android.internal.policy.impl.PhoneWindow$DecorView@4051f4e8,最初这里加入
08-23 20:44:04.531:E /窗口管理部(1311):android.view.WindowLeaked:活动com.project.findmybuffet.MainActivity渗漏窗口com.android.internal.policy.impl.PhoneWindow$DecorView@4051f4e8这是原本在这里添加
08-23 20:44:04.531:E /窗口管理器(1311):在android.view.ViewRoot<&初始化GT;(ViewRoot.java:258)
08-23 20:44:04.531:E /窗口管理器(1311):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
08-23 20:44:04.531:E /窗口管理器(1311):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-23 20:44:04.531:E /窗口管理部(1311):在android.view.Window $ LocalWindowManager.addView(Window.java:424)
08-23 20:44:04.531:E /窗口管理器(1311):在android.app.Dialog.show(Dialog.java:241)
08-23 20:44:04.531:E /窗口管理器(1311):在android.app.ProgressDialog.show(ProgressDialog.java:107)
08-23 20:44:04.531:E /窗口管理器(1311):在android.app.ProgressDialog.show(ProgressDialog.java:95)
08-23 20:44:04.531:E /窗口管理器(1311):在com.project.findmybuffet.MainActivity $ ParsingAsync.on preExecute(MainActivity.java:58)
08-23 20:44:04.531:E /窗口管理部(1311):在android.os.AsyncTask.execute(AsyncTask.java:391)
08-23 20:44:04.531:E /窗口管理器(1311):在com.project.findmybuffet.MainActivity.onCreate(MainActivity.java:47)
08-23 20:44:04.531:E /窗口管理器(1311):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-23 20:44:04.531:E /窗口管理部(1311):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-23 20:44:04.531:E /窗口管理器(1311):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-23 20:44:04.531:E /窗口管理器(1311):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
08-23 20:44:04.531:E /窗口管理器(1311):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)
08-23 20:44:04.531:E /窗口管理器(1311):在android.os.Handler.dispatchMessage(Handler.java:99)
08-23 20:44:04.531:E /窗口管理器(1311):在android.os.Looper.loop(Looper.java:123)
08-23 20:44:04.531:E /窗口管理部(1311):在android.app.ActivityThread.main(ActivityThread.java:3683)
08-23 20:44:04.531:E /窗口管理器(1311):在java.lang.reflect.Method.invokeNative(本机方法)
08-23 20:44:04.531:E /窗口管理器(1311):在java.lang.reflect.Method.invoke(Method.java:507)
08-23 20:44:04.531:E /窗口管理器(1311):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
08-23 20:44:04.531:E /窗口管理器(1311):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-23 20:44:04.531:E /窗口管理器(1311):在dalvik.system.NativeStart.main(本机方法)
08-23 20:49:02.664:I /处理部(1311):发送信号。 PID:1311 SIG:9
08-23 21:12:52.021:E / JSON解析器(1350):错误分析数据org.json.JSONException:值{\"restaurants\":[{\"restaurantID\":1,\"restaurantNAME\":\"CopperChimney\"},{\"restaurantID\":2,\"restaurantNAME\":\"Aroy\"},{\"restaurantID\":3,\"restaurantNAME\":\"MarkBoulevard\"},{\"restaurantID\":4,\"restaurantNAME\":\"Indian\"}],\"RestaurantTimings\":[{\"_id\":1,\"RestaurantTime\":\"8pm至晚上11时},{_ ID:2,RestaurantTime:晚上10点到12点},{_ ID:3,RestaurantTime:晚上11时至晚上9时},{_ ID:4,RestaurantTime :类型org.json.JSONObject的晚上10点至下午5点}]}不能转换为JSONArray
08-23 21:12:52.030:W / dalvikvm(1350):主题ID = 9:螺纹未捕获的异常(组= 0x40015560)退出
08-23 21:12:52.040:E / AndroidRuntime(1350):致命异常:AsyncTask的#1
08-23 21:12:52.040:E / AndroidRuntime(1350):了java.lang.RuntimeException:执行doInBackground发生错误()
08-23 21:12:52.040:E / AndroidRuntime(1350):在android.os.AsyncTask $ 3.done(AsyncTask.java:200)
08-23 21:12:52.040:E / AndroidRuntime(1350):在java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:274)
08-23 21:12:52.040:E / AndroidRuntime(1350):在java.util.concurrent.FutureTask.setException(FutureTask.java:125)
08-23 21:12:52.040:E / AndroidRuntime(1350):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:308)
08-23 21:12:52.040:E / AndroidRuntime(1350):在java.util.concurrent.FutureTask.run(FutureTask.java:138)
08-23 21:12:52.040:E / AndroidRuntime(1350):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
08-23 21:12:52.040:E / AndroidRuntime(1350):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:581)
08-23 21:12:52.040:E / AndroidRuntime(1350):在java.lang.Thread.run(Thread.java:1019)
08-23 21:12:52.040:E / AndroidRuntime(1350):因:显示java.lang.NullPointerException
08-23 21:12:52.040:E / AndroidRuntime(1350):在com.project.findmybuffet.MainActivity $ ParsingAsync.doInBackground(MainActivity.java:78)
08-23 21:12:52.040:E / AndroidRuntime(1350):在com.project.findmybuffet.MainActivity $ ParsingAsync.doInBackground(MainActivity.java:1)
08-23 21:12:52.040:E / AndroidRuntime(1350):在android.os.AsyncTask $ 2.call(AsyncTask.java:185)
08-23 21:12:52.040:E / AndroidRuntime(1350):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:306)
08-23 21:12:52.040:E / AndroidRuntime(1350):... 4个
08-23 21:12:54.300:E /窗口管理器(1350):活动com.project.findmybuffet.MainActivity渗漏,最初这里添加窗口com.android.internal.policy.impl.PhoneWindow$DecorView@4051f950
08-23 21:12:54.300:E /窗口管理器(1350):android.view.WindowLeaked:活动com.project.findmybuffet.MainActivity渗漏窗口com.android.internal.policy.impl.PhoneWindow$DecorView@4051f950这是原本在这里添加
08-23 21:12:54.300:E /窗口管理器(1350):在android.view.ViewRoot<&初始化GT;(ViewRoot.java:258)
08-23 21:12:54.300:E /窗口管理器(1350):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
08-23 21:12:54.300:E /窗口管理器(1350):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-23 21:12:54.300:E /窗口管理器(1350):在android.view.Window $ LocalWindowManager.addView(Window.java:424)
08-23 21:12:54.300:E /窗口管理器(1350):在android.app.Dialog.show(Dialog.java:241)
08-23 21:12:54.300:E /窗口管理器(1350):在android.app.ProgressDialog.show(ProgressDialog.java:107)
08-23 21:12:54.300:E /窗口管理器(1350):在android.app.ProgressDialog.show(ProgressDialog.java:95)
08-23 21:12:54.300:E /窗口管理器(1350):在com.project.findmybuffet.MainActivity $ ParsingAsync.on preExecute(MainActivity.java:58)
08-23 21:12:54.300:E /窗口管理器(1350):在android.os.AsyncTask.execute(AsyncTask.java:391)
08-23 21:12:54.300:E /窗口管理器(1350):在com.project.findmybuffet.MainActivity.onCreate(MainActivity.java:47)
08-23 21:12:54.300:E /窗口管理器(1350):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-23 21:12:54.300:E /窗口管理器(1350):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-23 21:12:54.300:E /窗口管理器(1350):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-23 21:12:54.300:E /窗口管理器(1350):在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)
08-23 21:12:54.300:E /窗口管理器(1350):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)
08-23 21:12:54.300:E /窗口管理器(1350):在android.os.Handler.dispatchMessage(Handler.java:99)
08-23 21:12:54.300:E /窗口管理器(1350):在android.os.Looper.loop(Looper.java:123)
08-23 21:12:54.300:E /窗口管理器(1350):在android.app.ActivityThread.main(ActivityThread.java:3683)
08-23 21:12:54.300:E /窗口管理器(1350):在java.lang.reflect.Method.invokeNative(本机方法)
08-23 21:12:54.300:E /窗口管理器(1350):在java.lang.reflect.Method.invoke(Method.java:507)
08-23 21:12:54.300:E /窗口管理器(1350):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)
08-23 21:12:54.300:E /窗口管理器(1350):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-23 21:12:54.300:E /窗口管理器(1350):在dalvik.system.NativeStart.main(本机方法)
08-23 21:13:14.790:D / dalvikvm(1350):GC_EXTERNAL_ALLOC释放282K,52%免费2779K / 5703K,2061K外部/ 2137K,暂停672ms
08-23 21:13:18.330:E / JSON解析器(1350):错误分析数据org.json.JSONException:值{\"restaurants\":[{\"restaurantID\":1,\"restaurantNAME\":\"CopperChimney\"},{\"restaurantID\":2,\"restaurantNAME\":\"Aroy\"},{\"restaurantID\":3,\"restaurantNAME\":\"MarkBoulevard\"},{\"restaurantID\":4,\"restaurantNAME\":\"Indian\"}],\"RestaurantTimings\":[{\"_id\":1,\"RestaurantTime\":\"8pm至晚上11时},{_ ID:2,RestaurantTime:晚上10时到下午12时},{_ ID:3,RestaurantTime:下午11时至晚上9时},{_ ID:4,RestaurantTime :类型org.json.JSONObject的晚上10点至下午5点}]}不能转换为JSONArray
08-23 21:13:18.330:W / dalvikvm(1350):主题ID = 11:螺纹未捕获的异常(组= 0x40015560)退出
JSON :: http://54.218.73.244:7002/
{
餐馆:[
{
restaurantID:1,
restaurantNAME:CopperChimney
},
{
restaurantID:2,
restaurantNAME:Aroy
},
{
restaurantID:3,
restaurantNAME:MarkBoulevard
},
{
restaurantID:4,
restaurantNAME:印
}
]
RestaurantTimings:[
{
_id:1,
RestaurantTime:晚上8点至晚上11时
},
{
_id:2,
RestaurantTime:晚上10点至中午12时
},
{
_id:3,
RestaurantTime:晚上11时至晚上9时
},
{
_id:4,
RestaurantTime:晚上10点至下午5点
}
]
}
解决方案
试试这个
HttpEntity httpEntity = HTT presponse.getEntity();
字符串_response = EntityUtils.toString(httpEntity);
Log.i(响应,_响应);
的JSONObject的JSONObject =新的JSONObject(_response);
要解析我已经展示了如何只解析餐饮
阵列。类似的解析等jsonarray RestaurantTimings
。
餐馆://数组的餐馆
{// JSON对象
restaurantID:1,// JSON字符串
restaurantNAME:CopperChimney
},
{
restaurantID:2,
restaurantNAME:Aroy
},
{
restaurantID:3,
restaurantNAME:MarkBoulevard
},
{
restaurantID:4,
restaurantNAME:印
}
] 尝试
{
的JSONObject的JSONObject =新的JSONObject(_response); JSONArray jarr = jsonObject.getJSONArray(餐馆);
// JSON数组餐馆
的for(int i = 0; I< jarr.length();我++)
{
JB的JSONObject = jarr.getJSONObject(I)
串ID = jb.getString(restaurantID);
字符串名称= jb.getString(restaurantNAME);
Toast.makeText(getApplicationContext(),名称,1000).show();
}
}
赶上(例外五)
{ }
此外,我看到这个
Log.i(解析..,+ jsonObject.get(学生)的toString());
jObj =新JSONArray(jsonObject.get(学生)的toString());
哪里是学生张贴的JSON。它看起来像你这样做是错误的。
编辑:
公共类MainActivity延伸活动{ ProgressDialog PD; @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
PD =新ProgressDialog(本);
新TheTask()执行();
}
类TheTask扩展的AsyncTask<无效,字符串,字符串>
{ @覆盖
保护无效onPostExecute(字符串结果){
// TODO自动生成方法存根
super.onPostExecute(结果);
pd.dismiss();
如果(结果!= NULL)
{
Log.i(效应初探,结果);
Toast.makeText(getApplicationContext(),因此,1000).show();
// 做一点事
}
} @覆盖
在preExecute保护无效(){
// TODO自动生成方法存根
super.on preExecute();
pd.show();
} @覆盖
保护字符串doInBackground(虚空...... PARAMS){
// TODO自动生成方法存根
字符串s =的getData();
返回S;
} 私人字符串的getData(){
字符串_response = NULL;
尝试
{
HttpClient的HttpClient的=新DefaultHttpClient();
httpclient.getParams()的setParameter(CoreProtocolPNames.PROTOCOL_VERSION,HttpVersion.HTTP_1_1)。
HTTPGET请求=新HTTPGET(http://54.218.73.244:7002/);
HTT presponse响应= httpclient.execute(请求);
HttpEntity resEntity = response.getEntity();
_response = EntityUtils.toString(resEntity);
//
的JSONObject的JSONObject =新的JSONObject(_response);
JSONArray jarr = jsonObject.getJSONArray(餐馆);
的for(int i = 0; I< jarr.length();我++)
{
JB的JSONObject = jarr.getJSONObject(I)
串ID = jb.getString(restaurantID);
字符串名称= jb.getString(restaurantNAME);
Toast.makeText(getApplicationContext(),名称,1000).show();
}
}
赶上(例外五)
{
e.printStackTrace();
} 返回_response;
} }
}
响应
08-23 21:44:51.455:I /效应初探(24732):{
08-23 21:44:51.455:I /效应初探(24732):餐馆:[
08-23 21:44:51.455:I /效应初探(24732):{
08-23 21:44:51.455:I /效应初探(24732):restaurantID:1,
08-23 21:44:51.455:I /效应初探(24732):restaurantNAME:CopperChimney
08-23 21:44:51.455:I /效应初探(24732):},
08-23 21:44:51.455:I /效应初探(24732):{
08-23 21:44:51.455:I /效应初探(24732):restaurantID:2,
08-23 21:44:51.455:I /效应初探(24732):restaurantNAME:Aroy
08-23 21:44:51.455:I /效应初探(24732):},
08-23 21:44:51.455:I /效应初探(24732):{
08-23 21:44:51.455:I /效应初探(24732):restaurantID:3,
08-23 21:44:51.455:I /效应初探(24732):restaurantNAME:MarkBoulevard
08-23 21:44:51.455:I /效应初探(24732):},
08-23 21:44:51.455:I /效应初探(24732):{
08-23 21:44:51.455:I /效应初探(24732):restaurantID:4,
08-23 21:44:51.455:I /效应初探(24732):restaurantNAME:印
08-23 21:44:51.455:I /效应初探(24732):}
08-23 21:44:51.455:I /效应初探(24732):]
08-23 21:44:51.455:I /效应初探(24732):RestaurantTimings:[
08-23 21:44:51.455:I /效应初探(24732):{
08-23 21:44:51.455:I /效应初探(24732):_id:1,
08-23 21:44:51.455:I /效应初探(24732):RestaurantTime:晚上8点至晚上11时
08-23 21:44:51.455:I /效应初探(24732):},
08-23 21:44:51.455:I /效应初探(24732):{
08-23 21:44:51.455:I /效应初探(24732):_id:2,
08-23 21:44:51.455:I /效应初探(24732):RestaurantTime:晚上10点至中午12时
08-23 21:44:51.455:I /效应初探(24732):},
08-23 21:44:51.455:I /效应初探(24732):{
08-23 21:44:51.455:I /效应初探(24732):_id:3,
08-23 21:44:51.455:I /效应初探(24732):RestaurantTime:晚上11时至晚上9时
08-23 21:44:51.455:I /效应初探(24732):},
08-23 21:44:51.455:I /效应初探(24732):{
08-23 21:44:51.455:I /效应初探(24732):_id:4,
08-23 21:44:51.455:I /效应初探(24732):RestaurantTime:晚上10点至下午5点
08-23 21:44:51.455:I /效应初探(24732):}
08-23 21:44:51.455:I /效应初探(24732):]
08-23 21:44:51.455:I /效应初探(24732):}
I am trying to populate the data into listview Asynchronously
I am retrieving data from server as JSON response
MainActivity.java
public class MainActivity extends Activity {
// url to make request
private static String url="http://54.218.73.244:7002/";
ListView yourListView;
List<Item> yourData = new ArrayList<Item>();
ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
yourListView = (ListView) findViewById(R.id.listViewID);
//Instantiating ProgressDialog with onCreate method
progressDialog=new ProgressDialog(MainActivity.this);
new ParsingAsync().execute();
}
private class ParsingAsync extends AsyncTask<Void, Void, Void>
{
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
progressDialog=ProgressDialog.show(MainActivity.this, "", "Please Wait", true, false);
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
//Create a JSON parser Instance ----- Used JSON parser from Android
JSONObjParser jParser=new JSONObjParser();
//Getting JSON string from URL ------ Used JSON Array from Android
JSONArray json=jParser.getJSONFromUrl(url);
List<Item> yourData = new ArrayList<Item>();
try {
for(int i=0;i<json.length();i++)
{
JSONObject c=json.getJSONObject(i);// Used JSON Object from Android
String RESTAURANT_NAME=c.getString("restaurantNAME");
yourData.add(new Item(RESTAURANT_NAME));
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
progressDialog.dismiss();
ListAdapter customAdapter = new ListAdapter(MainActivity.this, R.layout.itemlistrow, yourData);
yourListView.setAdapter(customAdapter);
}
}
}
JSONObjParser.java
public class JSONObjParser {
static InputStream is = null;
static JSONArray jObj = null;
static String json = "";
// constructor
public JSONObjParser() {
}
public JSONArray getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONArray(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
log::
08-23 20:43:59.442: W/dalvikvm(1311): threadid=6: spin on suspend #1 threadid=9 (pcf=0)
08-23 20:43:59.442: D/dalvikvm(1311): Temporarily moving tid 1320 to fg (was 0)
08-23 20:43:59.442: D/dalvikvm(1311): Temporarily raised priority on tid 1320 (10 -> 0)
08-23 20:43:59.528: W/dalvikvm(1311): threadid=6: spin on suspend resolved in 1085 msec
08-23 20:43:59.528: D/dalvikvm(1311): Restored policy of 1320 to 0
08-23 20:43:59.528: D/dalvikvm(1311): Restored priority on 1320 to 10
08-23 20:44:02.460: E/JSON Parser(1311): Error parsing data org.json.JSONException: Value {"restaurants":[{"restaurantID":1,"restaurantNAME":"CopperChimney"},{"restaurantID":2,"restaurantNAME":"Aroy"},{"restaurantID":3,"restaurantNAME":"MarkBoulevard"},{"restaurantID":4,"restaurantNAME":"Indian"}],"RestaurantTimings":[{"_id":1,"RestaurantTime":"8pm to 11pm"},{"_id":2,"RestaurantTime":"10pm to 12pm"},{"_id":3,"RestaurantTime":"11pm to 9pm"},{"_id":4,"RestaurantTime":"10pm to 5pm"}]} of type org.json.JSONObject cannot be converted to JSONArray
08-23 20:44:02.470: W/dalvikvm(1311): threadid=9: thread exiting with uncaught exception (group=0x40015560)
08-23 20:44:02.489: E/AndroidRuntime(1311): FATAL EXCEPTION: AsyncTask #1
08-23 20:44:02.489: E/AndroidRuntime(1311): java.lang.RuntimeException: An error occured while executing doInBackground()
08-23 20:44:02.489: E/AndroidRuntime(1311): at android.os.AsyncTask$3.done(AsyncTask.java:200)
08-23 20:44:02.489: E/AndroidRuntime(1311): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
08-23 20:44:02.489: E/AndroidRuntime(1311): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
08-23 20:44:02.489: E/AndroidRuntime(1311): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
08-23 20:44:02.489: E/AndroidRuntime(1311): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
08-23 20:44:02.489: E/AndroidRuntime(1311): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
08-23 20:44:02.489: E/AndroidRuntime(1311): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
08-23 20:44:02.489: E/AndroidRuntime(1311): at java.lang.Thread.run(Thread.java:1019)
08-23 20:44:02.489: E/AndroidRuntime(1311): Caused by: java.lang.NullPointerException
08-23 20:44:02.489: E/AndroidRuntime(1311): at com.project.findmybuffet.MainActivity$ParsingAsync.doInBackground(MainActivity.java:78)
08-23 20:44:02.489: E/AndroidRuntime(1311): at com.project.findmybuffet.MainActivity$ParsingAsync.doInBackground(MainActivity.java:1)
08-23 20:44:02.489: E/AndroidRuntime(1311): at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-23 20:44:02.489: E/AndroidRuntime(1311): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
08-23 20:44:02.489: E/AndroidRuntime(1311): ... 4 more
08-23 20:44:04.531: E/WindowManager(1311): Activity com.project.findmybuffet.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4051f4e8 that was originally added here
08-23 20:44:04.531: E/WindowManager(1311): android.view.WindowLeaked: Activity com.project.findmybuffet.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4051f4e8 that was originally added here
08-23 20:44:04.531: E/WindowManager(1311): at android.view.ViewRoot.<init>(ViewRoot.java:258)
08-23 20:44:04.531: E/WindowManager(1311): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
08-23 20:44:04.531: E/WindowManager(1311): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-23 20:44:04.531: E/WindowManager(1311): at android.view.Window$LocalWindowManager.addView(Window.java:424)
08-23 20:44:04.531: E/WindowManager(1311): at android.app.Dialog.show(Dialog.java:241)
08-23 20:44:04.531: E/WindowManager(1311): at android.app.ProgressDialog.show(ProgressDialog.java:107)
08-23 20:44:04.531: E/WindowManager(1311): at android.app.ProgressDialog.show(ProgressDialog.java:95)
08-23 20:44:04.531: E/WindowManager(1311): at com.project.findmybuffet.MainActivity$ParsingAsync.onPreExecute(MainActivity.java:58)
08-23 20:44:04.531: E/WindowManager(1311): at android.os.AsyncTask.execute(AsyncTask.java:391)
08-23 20:44:04.531: E/WindowManager(1311): at com.project.findmybuffet.MainActivity.onCreate(MainActivity.java:47)
08-23 20:44:04.531: E/WindowManager(1311): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-23 20:44:04.531: E/WindowManager(1311): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-23 20:44:04.531: E/WindowManager(1311): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-23 20:44:04.531: E/WindowManager(1311): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-23 20:44:04.531: E/WindowManager(1311): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-23 20:44:04.531: E/WindowManager(1311): at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 20:44:04.531: E/WindowManager(1311): at android.os.Looper.loop(Looper.java:123)
08-23 20:44:04.531: E/WindowManager(1311): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-23 20:44:04.531: E/WindowManager(1311): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 20:44:04.531: E/WindowManager(1311): at java.lang.reflect.Method.invoke(Method.java:507)
08-23 20:44:04.531: E/WindowManager(1311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-23 20:44:04.531: E/WindowManager(1311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-23 20:44:04.531: E/WindowManager(1311): at dalvik.system.NativeStart.main(Native Method)
08-23 20:49:02.664: I/Process(1311): Sending signal. PID: 1311 SIG: 9
08-23 21:12:52.021: E/JSON Parser(1350): Error parsing data org.json.JSONException: Value {"restaurants":[{"restaurantID":1,"restaurantNAME":"CopperChimney"},{"restaurantID":2,"restaurantNAME":"Aroy"},{"restaurantID":3,"restaurantNAME":"MarkBoulevard"},{"restaurantID":4,"restaurantNAME":"Indian"}],"RestaurantTimings":[{"_id":1,"RestaurantTime":"8pm to 11pm"},{"_id":2,"RestaurantTime":"10pm to 12pm"},{"_id":3,"RestaurantTime":"11pm to 9pm"},{"_id":4,"RestaurantTime":"10pm to 5pm"}]} of type org.json.JSONObject cannot be converted to JSONArray
08-23 21:12:52.030: W/dalvikvm(1350): threadid=9: thread exiting with uncaught exception (group=0x40015560)
08-23 21:12:52.040: E/AndroidRuntime(1350): FATAL EXCEPTION: AsyncTask #1
08-23 21:12:52.040: E/AndroidRuntime(1350): java.lang.RuntimeException: An error occured while executing doInBackground()
08-23 21:12:52.040: E/AndroidRuntime(1350): at android.os.AsyncTask$3.done(AsyncTask.java:200)
08-23 21:12:52.040: E/AndroidRuntime(1350): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
08-23 21:12:52.040: E/AndroidRuntime(1350): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
08-23 21:12:52.040: E/AndroidRuntime(1350): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
08-23 21:12:52.040: E/AndroidRuntime(1350): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
08-23 21:12:52.040: E/AndroidRuntime(1350): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
08-23 21:12:52.040: E/AndroidRuntime(1350): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
08-23 21:12:52.040: E/AndroidRuntime(1350): at java.lang.Thread.run(Thread.java:1019)
08-23 21:12:52.040: E/AndroidRuntime(1350): Caused by: java.lang.NullPointerException
08-23 21:12:52.040: E/AndroidRuntime(1350): at com.project.findmybuffet.MainActivity$ParsingAsync.doInBackground(MainActivity.java:78)
08-23 21:12:52.040: E/AndroidRuntime(1350): at com.project.findmybuffet.MainActivity$ParsingAsync.doInBackground(MainActivity.java:1)
08-23 21:12:52.040: E/AndroidRuntime(1350): at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-23 21:12:52.040: E/AndroidRuntime(1350): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
08-23 21:12:52.040: E/AndroidRuntime(1350): ... 4 more
08-23 21:12:54.300: E/WindowManager(1350): Activity com.project.findmybuffet.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4051f950 that was originally added here
08-23 21:12:54.300: E/WindowManager(1350): android.view.WindowLeaked: Activity com.project.findmybuffet.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@4051f950 that was originally added here
08-23 21:12:54.300: E/WindowManager(1350): at android.view.ViewRoot.<init>(ViewRoot.java:258)
08-23 21:12:54.300: E/WindowManager(1350): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
08-23 21:12:54.300: E/WindowManager(1350): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-23 21:12:54.300: E/WindowManager(1350): at android.view.Window$LocalWindowManager.addView(Window.java:424)
08-23 21:12:54.300: E/WindowManager(1350): at android.app.Dialog.show(Dialog.java:241)
08-23 21:12:54.300: E/WindowManager(1350): at android.app.ProgressDialog.show(ProgressDialog.java:107)
08-23 21:12:54.300: E/WindowManager(1350): at android.app.ProgressDialog.show(ProgressDialog.java:95)
08-23 21:12:54.300: E/WindowManager(1350): at com.project.findmybuffet.MainActivity$ParsingAsync.onPreExecute(MainActivity.java:58)
08-23 21:12:54.300: E/WindowManager(1350): at android.os.AsyncTask.execute(AsyncTask.java:391)
08-23 21:12:54.300: E/WindowManager(1350): at com.project.findmybuffet.MainActivity.onCreate(MainActivity.java:47)
08-23 21:12:54.300: E/WindowManager(1350): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-23 21:12:54.300: E/WindowManager(1350): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
08-23 21:12:54.300: E/WindowManager(1350): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
08-23 21:12:54.300: E/WindowManager(1350): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
08-23 21:12:54.300: E/WindowManager(1350): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
08-23 21:12:54.300: E/WindowManager(1350): at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 21:12:54.300: E/WindowManager(1350): at android.os.Looper.loop(Looper.java:123)
08-23 21:12:54.300: E/WindowManager(1350): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-23 21:12:54.300: E/WindowManager(1350): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 21:12:54.300: E/WindowManager(1350): at java.lang.reflect.Method.invoke(Method.java:507)
08-23 21:12:54.300: E/WindowManager(1350): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-23 21:12:54.300: E/WindowManager(1350): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-23 21:12:54.300: E/WindowManager(1350): at dalvik.system.NativeStart.main(Native Method)
08-23 21:13:14.790: D/dalvikvm(1350): GC_EXTERNAL_ALLOC freed 282K, 52% free 2779K/5703K, external 2061K/2137K, paused 672ms
08-23 21:13:18.330: E/JSON Parser(1350): Error parsing data org.json.JSONException: Value {"restaurants":[{"restaurantID":1,"restaurantNAME":"CopperChimney"},{"restaurantID":2,"restaurantNAME":"Aroy"},{"restaurantID":3,"restaurantNAME":"MarkBoulevard"},{"restaurantID":4,"restaurantNAME":"Indian"}],"RestaurantTimings":[{"_id":1,"RestaurantTime":"8pm to 11pm"},{"_id":2,"RestaurantTime":"10pm to 12pm"},{"_id":3,"RestaurantTime":"11pm to 9pm"},{"_id":4,"RestaurantTime":"10pm to 5pm"}]} of type org.json.JSONObject cannot be converted to JSONArray
08-23 21:13:18.330: W/dalvikvm(1350): threadid=11: thread exiting with uncaught exception (group=0x40015560)
JSON :: http://54.218.73.244:7002/
{
"restaurants": [
{
"restaurantID": 1,
"restaurantNAME": "CopperChimney"
},
{
"restaurantID": 2,
"restaurantNAME": "Aroy"
},
{
"restaurantID": 3,
"restaurantNAME": "MarkBoulevard"
},
{
"restaurantID": 4,
"restaurantNAME": "Indian"
}
],
"RestaurantTimings": [
{
"_id": 1,
"RestaurantTime": "8pm to 11pm"
},
{
"_id": 2,
"RestaurantTime": "10pm to 12pm"
},
{
"_id": 3,
"RestaurantTime": "11pm to 9pm"
},
{
"_id": 4,
"RestaurantTime": "10pm to 5pm"
}
]
}
解决方案
Try this
HttpEntity httpEntity = httpResponse.getEntity();
String _response=EntityUtils.toString(httpEntity);
Log.i("Response",_response);
JSONObject jsonObject = new JSONObject(_response);
To parse i have shown only how parse restaurants
array. Similar parse the other jsonarray RestaurantTimings
.
"restaurants": [ // array of restaurants
{ // json object
"restaurantID": 1, // json string
"restaurantNAME": "CopperChimney"
},
{
"restaurantID": 2,
"restaurantNAME": "Aroy"
},
{
"restaurantID": 3,
"restaurantNAME": "MarkBoulevard"
},
{
"restaurantID": 4,
"restaurantNAME": "Indian"
}
],
try
{
JSONObject jsonObject = new JSONObject(_response);
JSONArray jarr = jsonObject.getJSONArray("restaurants");
// json array restaurants
for(int i=0;i<jarr.length();i++)
{
JSONObject jb = jarr.getJSONObject(i);
String id = jb.getString("restaurantID");
String name = jb.getString("restaurantNAME");
Toast.makeText(getApplicationContext(),name, 1000).show();
}
}
catch(Exception e)
{
}
Also i see this
Log.i("parsing..", ""+jsonObject.get("student").toString());
jObj = new JSONArray(jsonObject.get("student").toString());
Where is student in the json posted. It looks like you are doing it wrong
Edit :
public class MainActivity extends Activity {
ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pd = new ProgressDialog(this);
new TheTask().execute();
}
class TheTask extends AsyncTask<Void,String,String>
{
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
pd.dismiss();
if(result!=null)
{
Log.i("Reponse",result);
Toast.makeText(getApplicationContext(), result, 1000).show();
// do something
}
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pd.show();
}
@Override
protected String doInBackground(Void... params) {
// TODO Auto-generated method stub
String s =getData();
return s;
}
private String getData() {
String _response = null;
try
{
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpGet request = new HttpGet("http://54.218.73.244:7002/");
HttpResponse response = httpclient.execute(request);
HttpEntity resEntity = response.getEntity();
_response =EntityUtils.toString(resEntity);
//
JSONObject jsonObject = new JSONObject(_response);
JSONArray jarr = jsonObject.getJSONArray("restaurants");
for(int i=0;i<jarr.length();i++)
{
JSONObject jb = jarr.getJSONObject(i);
String id = jb.getString("restaurantID");
String name = jb.getString("restaurantNAME");
Toast.makeText(getApplicationContext(),name, 1000).show();
}
}
catch(Exception e)
{
e.printStackTrace();
}
return _response;
}
}
}
Response
08-23 21:44:51.455: I/Reponse(24732): {
08-23 21:44:51.455: I/Reponse(24732): "restaurants": [
08-23 21:44:51.455: I/Reponse(24732): {
08-23 21:44:51.455: I/Reponse(24732): "restaurantID": 1,
08-23 21:44:51.455: I/Reponse(24732): "restaurantNAME": "CopperChimney"
08-23 21:44:51.455: I/Reponse(24732): },
08-23 21:44:51.455: I/Reponse(24732): {
08-23 21:44:51.455: I/Reponse(24732): "restaurantID": 2,
08-23 21:44:51.455: I/Reponse(24732): "restaurantNAME": "Aroy"
08-23 21:44:51.455: I/Reponse(24732): },
08-23 21:44:51.455: I/Reponse(24732): {
08-23 21:44:51.455: I/Reponse(24732): "restaurantID": 3,
08-23 21:44:51.455: I/Reponse(24732): "restaurantNAME": "MarkBoulevard"
08-23 21:44:51.455: I/Reponse(24732): },
08-23 21:44:51.455: I/Reponse(24732): {
08-23 21:44:51.455: I/Reponse(24732): "restaurantID": 4,
08-23 21:44:51.455: I/Reponse(24732): "restaurantNAME": "Indian"
08-23 21:44:51.455: I/Reponse(24732): }
08-23 21:44:51.455: I/Reponse(24732): ],
08-23 21:44:51.455: I/Reponse(24732): "RestaurantTimings": [
08-23 21:44:51.455: I/Reponse(24732): {
08-23 21:44:51.455: I/Reponse(24732): "_id": 1,
08-23 21:44:51.455: I/Reponse(24732): "RestaurantTime": "8pm to 11pm"
08-23 21:44:51.455: I/Reponse(24732): },
08-23 21:44:51.455: I/Reponse(24732): {
08-23 21:44:51.455: I/Reponse(24732): "_id": 2,
08-23 21:44:51.455: I/Reponse(24732): "RestaurantTime": "10pm to 12pm"
08-23 21:44:51.455: I/Reponse(24732): },
08-23 21:44:51.455: I/Reponse(24732): {
08-23 21:44:51.455: I/Reponse(24732): "_id": 3,
08-23 21:44:51.455: I/Reponse(24732): "RestaurantTime": "11pm to 9pm"
08-23 21:44:51.455: I/Reponse(24732): },
08-23 21:44:51.455: I/Reponse(24732): {
08-23 21:44:51.455: I/Reponse(24732): "_id": 4,
08-23 21:44:51.455: I/Reponse(24732): "RestaurantTime": "10pm to 5pm"
08-23 21:44:51.455: I/Reponse(24732): }
08-23 21:44:51.455: I/Reponse(24732): ]
08-23 21:44:51.455: I/Reponse(24732): }
这篇关于列表视图中的Android,而从服务器获取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文