zoukankan      html  css  js  c++  java
  • Android数据加载和Json解析——蓝本

    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");

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

  • 相关阅读:
    Android传递中文参数方法(之一)
    配置类与yaml
    修改ip失败,一个意外的情况处理方法
    oracle 自增序列与触发器
    Excel导入数据带小数点的问题
    数据库null与空的区别
    小米手机无法打开程序报错Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication的解决办法
    gradle类重复的问题解决方法
    windowSoftInputMode属性讲解
    android studio 的配置
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4736924.html
Copyright © 2011-2022 走看看