通过网络加载数据显示到ListView

数据API:http://www.kuaidi100.com/query?type=yuantong&postid=11111111111
原理:通过volley网络请求获取json数据,将数据数据解析处理赋值到控件上.
public class Main2Activity extends AppCompatActivity {
    ListView listview;
    BaseAdapter adapter;
    List list=new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        getData();
        initView();
    }

    private void getData() {
        StringRequest stringRequest = new StringRequest(Request.Method.GET,
                "http://www.kuaidi100.com/query?type=yuantong&postid=11111111111",
                new com.android.volley.Response.Listener(){
            @Override
            public void onResponse(String s) {
                //打印请求返回结果
                transform_data(s);
                Log.e("zsw",s);
            }
        },new com.android.volley.Response.ErrorListener(){
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Log.e("zsw","erro2");
            }
        });
//将StringRequest对象添加进RequestQueue请求队列中
        Volley.newRequestQueue(getApplicationContext()).add(stringRequest);
    }

    private void transform_data(String s) {
        try {
            JSONObject mypack = new JSONObject(s);
            JSONArray data=mypack.getJSONArray("data");
            int datalength=data.length();
            for (int i = 0; i  hashmap=new HashMap<>();
                JSONObject one=data.getJSONObject(i);
                hashmap.put("time",one.getString("time"));
                hashmap.put("context",one.getString("context"));
                list.add(hashmap);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    private void initView() {
        listview = (ListView) findViewById(R.id.mylistview);
        adapter = new MyAdapter();
        listview.setAdapter(adapter);
    }

    private class MyAdapter extends BaseAdapter{
        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int i) {
            return list.get(i);
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup viewGroup) {
            ViewHolder holder;
            if (convertView==null){
                convertView=View.inflate(Main2Activity.this,R.layout.mylistview_item,null);
                holder=new ViewHolder();
                holder.text1=convertView.findViewById(R.id.tv_time);
                holder.text2=convertView.findViewById(R.id.tv_context);
                convertView.setTag(holder);
            }
            else {
                holder= (ViewHolder) convertView.getTag();
            }
            holder.text1.setText((CharSequence) list.get(position).get("time"));
            holder.text2.setText((CharSequence) list.get(position).get("context"));
            return convertView;
        }
    }
    static class ViewHolder{
        TextView text1;
        TextView text2;
    }

}

总结:主要的点就是list里边存的是hasmap。

你可能感兴趣的:(android)