Android数据加载和Json解析——蓝本

Android数据加载和Json解析——蓝本

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

1、下载数据来创建一个实体类

 class MyData {
        String imagepath;
        String title;
        String desc;

        public MyData(String imagepath, String title, String desc)
        {
            super();
            this.imagepath = imagepath;
            this.title = title;
            this.desc = desc;
        }

    }

2、AsyncTask数据载入及Json解析类

  class FileAsyncTask extends AsyncTask<String, Void, String> {   

        @Override
        protected String doInBackground(String... params)
        {
            InputStream is = null;
            ByteArrayBuffer byteArrayBuffer = new ByteArrayBuffer(4000);
            try
            {   
                URL url = new URL(params[0]);
                URLConnection openConnection = url.openConnection();
                //设置连接超时的时间
                openConnection.setConnectTimeout(3000);
                //数据读取超时的时间
                openConnection.setReadTimeout(3000);
                is = openConnection.getInputStream();
                byte[] buffer = new byte[1024];
                int len;
                while (-1 != (len = is.read(buffer)))
                {
                    byteArrayBuffer.append(buffer, 0, len);
                }

            }
            catch (MalformedURLException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {   
                // TODO Auto-generated catch block
                runOnUiThread(new Runnable()
                {
                    public void run()
                    {   
                        //设置载入异常时的控件,通常显示运行进度条
                    }   
                });
                e.printStackTrace();
            }
            finally
            {
                if (is != null)
                {
                    try
                    {
                        is.close();
                    }
                    catch (IOException e)
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            String res = new String(byteArrayBuffer.toByteArray(), 0,
                    byteArrayBuffer.length());
            return res;
        }

        // 解析jsonArray数据
        @Override
        protected void onPostExecute(String result)
        {
            try
            {
                JSONArray jsonArray = new JSONArray(result);
                for (int i = 0; i < jsonArray.length(); i++)
                {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    String imagepath = jsonObject.getString("imagepath");
                    String title = jsonObject.getString("title");
                    String desc = jsonObject.getString("desc");
                    MyData myData = new MyData(imagepath, title, desc);
                    dataList.add(myData);//加入数据
                }
                myAdapter.notifyDataSetChanged();//通知适配器数据改变

            }
            catch (JSONException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            super.onPostExecute(result);
        }
    }

3、调用

 private ArrayList<MyData> dataList = new ArrayList<MainActivity.MyData>();//声明全局变量dataList 

FileAsyncTask fileAsyncTask = new FileAsyncTask();
        fileAsyncTask.execute("http://192.168.56.1:8080/service.txt");

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117232.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月8日 下午9:00
下一篇 2022年1月8日 下午9:00


相关推荐

  • xpath语法大全

    xpath语法大全

    2021年11月26日
    57
  • 时间轮算法[通俗易懂]

    时间轮算法[通俗易懂]时间轮算法最近工作中使用了Xxl-Job框架来做分布式调度,内部采用了时间轮做整体调度,顺便学习并总结一下。概述绝对时间和相对时间定时任务一般有两种:1.约定一段时间后执行。2.约定某个时间点执行。​ 其实这两者是可以互相转换的,比如现在有一个定时任务是12点执行,当前时间是9点,那就可以认为这个任务是3小时后执行。同样,现在又有一个任务,是3小时后执行,那也可以认为这个任务12点执行。​ 假设我们现在有3个定时任务A、B、C,分别需要在3点、4点和9点执行,我们把

    2022年10月1日
    5
  • linux 双网卡 同网段_双网卡 同网段 冲突

    linux 双网卡 同网段_双网卡 同网段 冲突场景:A(192.168.10.203)X网段(192.168.10.200)B(10.179.172.100)Y网段C(10.179.172.122)A是X网段中的设备,C为Y网段中的设备,现在想设备C访问到设备A,现有一台双网卡服务器B实现方式:开启服务器B的地址伪装功能1、设置服务器B的ipB服务器网卡1设置X网段ip192.168.10.200,不设网关网卡2设置Y网段ip10.179.172.100,网关设置为10.179.172.100这样A可以ping通BC也可

    2025年8月26日
    14
  • 吐血整理!java面试中经常被问到的问题「建议收藏」

    吐血整理!java面试中经常被问到的问题「建议收藏」主备同步的实现原理我们先来了解一下主备同步的原理,下面以一个update语句来介绍主库与备库间是如何进行同步的。上图是一个update语句在节点A执行,然后同步到节点B的完整流程图,具体步骤有:主库接受到客户端发送的一条update语句,执行内部事务逻辑,同时写binlog。备库通过changemaster命令,设置主库的IP、端口、用户名和密码,以及要从哪个位置开始请求binlog。这个位置包含文件名和偏移量。在备库上执行startslave命令,启动两个线程io_thread

    2022年7月9日
    40
  • 智谱 AI 发布开源 GLM 模型家族:MIT 许可、Z.ai 平台与高速推理服务同步亮相

    智谱 AI 发布开源 GLM 模型家族:MIT 许可、Z.ai 平台与高速推理服务同步亮相

    2026年3月12日
    3
  • 百度一下即梦ai和小云雀有什么区别?那个用起来更方便简单

    百度一下即梦ai和小云雀有什么区别?那个用起来更方便简单

    2026年3月13日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号