Json串方括号开头手动解析数据简单案例

来源:互联网 发布:小学四年级体测数据 编辑:程序博客网 时间:2024/06/06 01:19
package com.bwie.pm.page;import android.content.Intent;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.ListView;import com.bwie.pm.Main3Activity;import com.bwie.pm.adapter.PtfAdapter;import com.bwie.pm.bean.PtfBean;import com.bwie.pm.R;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;/** * author:Created by WangZhiQiang on 2017/10/20. */public class PageData extends Fragment {    private View view;    private PullToRefreshListView ptf;    private String uri = "http://mnews.gw.com.cn/wap/data/news/";    private String u;    private String p = "/page_";    private int pageIndex = 1;    private ArrayList<PtfBean> list = new ArrayList<PtfBean>();    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.layout_data, container, false);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        ptf = (PullToRefreshListView) view.findViewById(R.id.ptf);        u = getArguments().getString("urls");        initData();//初始化数据        ptf.setMode(PullToRefreshBase.Mode.BOTH);        //PullToRefresh的点击事件        ptf.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {                Intent intent = new Intent(getActivity(), Main3Activity.class);                intent.putExtra("ur",list.get(i).getUu());                startActivity(intent);            }        });        //PullToRefresh的监听事件        ptf.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {                //下拉刷新的方法                new MyAsyncTask1().execute();            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {                //上拉加载的方法                new MyAsyncTask2().execute();            }        });    }    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            String url = msg.obj.toString();            try {                JSONArray jsonArray = new JSONArray(url);                JSONObject jsonObject = jsonArray.optJSONObject(0);                JSONArray data = jsonObject.optJSONArray("data");                for (int i = 0; i < data.length(); i++) {                    JSONObject object = data.optJSONObject(i);                    String img = object.getString("img");                    String title = object.getString("title");                    String uu = object.getString("url");                    list.add(new PtfBean(img, title,uu));                }                ptf.setAdapter(new PtfAdapter(getActivity(), list));            } catch (JSONException e) {                e.printStackTrace();            }        }    };    //初始化数据    private void initData() {        new Thread() {            @Override            public void run() {                super.run();                try {                    URL url = new URL(uri + u + p + pageIndex + ".json");                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                    int responseCode = urlConnection.getResponseCode();                    if (responseCode == 200) {                        InputStream inputStream = urlConnection.getInputStream();                        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));                        StringBuilder builder = new StringBuilder();                        String stringTemp = "";                        while ((stringTemp = reader.readLine()) != null) {                            builder.append(stringTemp);                        }                        Message message = new Message();                        message.obj = builder.toString();                        handler.sendMessage(message);                    }                } catch (MalformedURLException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                }            }        }.start();    }    public static PageData receive(String strs) {        Bundle bundle = new Bundle();        bundle.putString("urls", strs);        PageData pageData = new PageData();        pageData.setArguments(bundle);        return pageData;    }    //下拉刷新的方法    class MyAsyncTask1 extends AsyncTask<Void, Void, String> {        @Override        protected String doInBackground(Void... voids) {            try {                Thread.sleep(2000);            } catch (InterruptedException e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            list.clear();            pageIndex++;            initData();            ptf.onRefreshComplete();        }    }    //上拉加载的方法    class MyAsyncTask2 extends AsyncTask<Void, Void, String> {        @Override        protected String doInBackground(Void... voids) {            try {                Thread.sleep(2000);            } catch (InterruptedException e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            pageIndex++;            initData();            ptf.onRefreshComplete();        }    }}