android – 解析多个JSON Url

android – 解析多个JSON Url,第1张

概述我试图在我的应用程序中解析多个 JSON URl并在一个列表视图中显示它们 但只有我能做的是显示一个URl,我想在一个列表视图中显示多个URl,并且URl具有相同的数组名称和属性 这是我的代码 @Overridepublic void onStart() { super.onStart(); if(connectiondetector.isConnected()){ 我试图在我的应用程序中解析多个 JSON URl并在一个列表视图中显示它们
但只有我能做的是显示一个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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1125900.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存