
但只有我能做的是显示一个URl,我想在一个列表视图中显示多个URl,并且URl具有相同的数组名称和属性
这是我的代码
@OverrIDepublic voID onStart() { super.onStart(); if(connectiondetector.isConnected()){ new Jsontask().execute( "https://newsAPI.org/v1/articles?source=Google-news&sortBy=top&APIKey=ade8f00a634b4825a028837ec107afae" ); }else { Toast.makeText(page.this,"no internet connection",Toast.LENGTH_SHORT).show(); } // ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroIDStudio for more information.}@OverrIDepublic voID onStop() { super.onStop();}public class Jsontask extends AsyncTask<String,String,List<movIEmodel>> { @OverrIDe protected List<movIEmodel> doInBackground(String... params) { BufferedReader reader = null; httpURLConnection connection = null; try { URL url = new URL(params[0]); connection = (httpURLConnection) url.openConnection(); connection.connect(); inputStream stream = connection.getinputStream(); reader = new BufferedReader(new inputStreamReader(stream)); StringBuffer buffer = new StringBuffer(); String line = ""; while ((line = reader.readline()) != null) { buffer.append(line); } String finalJson = buffer.toString(); JsONObject parentobject = new JsONObject(finalJson); // JsONObject parentobject1 = parentobject.getJsONObject(""); JsONArray parentarray = parentobject.getJsONArray("articles"); List<movIEmodel>movIEmodelList = new ArrayList<>(); for (int i = 0; i < parentarray.length(); i++){ JsONObject finalobject = parentarray.getJsONObject(i); movIEmodel movIEmodel = new movIEmodel(); movIEmodel.setAuthor(finalobject.getString("author")); movIEmodel.setDescription(finalobject.getString("description")); movIEmodel.setTitle(finalobject.getString("Title")); movIEmodel.setimage(finalobject.getString("urlToImage")); movIEmodel.setUrl(finalobject.getString("url")); movIEmodel.setPublishedAt(finalobject.getString("publishedAt")); movIEmodelList.add(movIEmodel); } return movIEmodelList; } catch (MalformedURLException e) { e.printstacktrace(); } catch (IOException e) { e.printstacktrace(); } catch (JsONException e) { e.printstacktrace(); } finally { if (connection != null) { connection.disconnect(); } try { if (reader != null) { reader.close(); } } catch (IOException e) { e.printstacktrace(); } } return null; } @OverrIDe protected voID onPostExecute(List<movIEmodel> result) { super.onPostExecute(result); newsadapter adapter = new newsadapter(getApplicationContext(),R.layout.row,result); lvnews.setAdapter(adapter); lvnews.setonScrollListener(new AbsListVIEw.OnScrollListener() { @OverrIDe public voID onScrollStateChanged(AbsListVIEw vIEw,int scrollState) { } @OverrIDe public voID onScroll(AbsListVIEw vIEw,int firstVisibleItem,int visibleItemCount,int totalitemCount) { if(firstVisibleItem+visibleItemCount == totalitemCount && totalitemCount!=0) { if(flag_loading == false) { flag_loading = true; new Jsontask().execute("https://newsAPI.org/v1/articles?source=ars-technica&sortBy=top&APIKey=ade8f00a634b4825a028837ec107afae") ;} } } }); }}解决方法 你只需声明你的列表< movIEmodel> movIEmodelList = new ArrayList<>();在asynctask之外并在asynctask中使用相同的列表.如果你使用声明在asynctask里面的列表它重新初始化,并且从第一个asynctask存储的先前数据从列表中清除. 只需声明在create方法上声明所有变量的列表.
总结以上是内存溢出为你收集整理的android – 解析多个JSON Url全部内容,希望文章能够帮你解决android – 解析多个JSON Url所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)