因为要更新UI中的ListView,所以在DownloadAsyncTask的构造函数中传入了ListView和Context两个形参。在doInBackground()方法中完成了数据计算操作后,将返回一个List<News>类型的变量,会接着执行onPostExecute()方法,变量会传到他的形参中。通过这个List集合,我们来完成ListView的数据的填充。填充ListView首先需要自定义一个适配器继承自BaseAdapter,我们取名为MyBaseAdapter。为其传入Context和list两个参数,至于ListView的填充请看我的另一篇博客,下面直接上代码:
1 package com.yztc.lx.asynctasklistview.com.yztc.lx.adapter;
2
3 import android.content.Context;
4 import android.view.LayoutInflater;
5 import android.view.View;
6 import android.view.ViewGroup;
7 import android.widget.BaseAdapter;
8 import android.widget.TextView;
9
10 import com.yztc.lx.asynctasklistview.R;
11 import com.yztc.lx.asynctasklistview.com.yztc.lx.bean.News;
12
13 import java.util.List;
14
15 /**
16 * Created by Lx on 2016/8/10.
17 */
18
19 public class MyBaseAdapter extends BaseAdapter {
20 private Context mContext;
21 private List<News> list;
22 private LayoutInflater inflater;
23
24 public MyBaseAdapter(Context context, List<News> list) {
25 this.mContext = context;
26 this.list = list;
27 this.inflater=LayoutInflater.from(mContext);
28 }
29
30 /**
31 *
32 * @return 要填充的集合的长度
33 */
34 @Override
35 public int getCount() {
36 return list.size();
37 }
38
39
40 @Override
41 public Object getItem(int position) {
42 return list.get(position);
43 }
44
45 @Override
46 public long getItemId(int position) {
47 return position;
48 }
49
50 /**
51 *
52 * @param position 在适配器数据集合中的item的位置
53 * @param convertView 已经填充过的View,可以用来重用来提高加载速度
54 * @param parent 这个view将要展示的父容器
55 * @return
56 */
57 @Override
58 public View getView(int position, View convertView, ViewGroup parent) {
59 News news=list.get(position);
60 ViewHolder holder;
61 if(convertView==null){
62 holder=new ViewHolder();
63 convertView=inflater.inflate(R.layout.item,null);
64 holder.tv_id= (TextView) convertView.findViewById(R.id.tv_id);
65 holder.tv_summary= (TextView) convertView.findViewById(R.id.tv_summary);
66 holder.tv_title= (TextView) convertView.findViewById(R.id.tv_title);
67 convertView.setTag(holder);
68 }else{
69 holder= (ViewHolder) convertView.getTag();
70 }
71 holder.tv_id.setText(""+news.getId());
72 holder.tv_title.setText(news.getTitle());
73 holder.tv_summary.setText(news.getSummary());
74 return convertView;
75 }
76
77 class ViewHolder{
78 private TextView tv_title,tv_summary,tv_id;
79 }
80 }
1 package com.yztc.lx.asynctasklistview;
2
3 import android.os.Bundle;
4 import android.support.v7.app.AppCompatActivity;
5 import android.widget.ListView;
6 import android.widget.Spinner;
7
8 import com.yztc.lx.asynctasklistview.com.yztc.lx.async.DownloadAsyncTask;
9
10 public class MainActivity extends AppCompatActivity {
11
12 private ListView lv;
13 private String urlPath = "http://api.m.mtime.cn/News/NewsList.api?pageIndex=1";
14
15 @Override
16 protected void onCreate(Bundle savedInstanceState