Android数据加载及Json解析——原始版

来源:互联网 发布:淘宝上能买药吗 编辑:程序博客网 时间:2024/06/05 01:06

点击查看原文

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");
4 0
原创粉丝点击