异步加载

来源:互联网 发布:哪有学java的学校 编辑:程序博客网 时间:2024/05/19 18:37
package com.wzq.listview_iamge;import android.graphics.Bitmap;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import java.util.List;public class MainActivity extends AppCompatActivity {    private ListView lv;    String urlTotal = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";    //    List<Student.DataBean> lists = new ArrayList<>();    private MAdapter mAdapter;    private List<News.DataBean> dataList;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        lv = (ListView) findViewById(R.id.lv);//        mAdapter = new MAdapter();        initData();    }    private void initData() {        new MJsonAsyncTask().execute(urlTotal);    }    class MJsonAsyncTask extends AsyncTask<String, Void, String> {        public MJsonAsyncTask() {            super();        }        //主线程可以更新ui        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            News news = new Gson().fromJson(s, News.class);            dataList = news.getData();            mAdapter = new MAdapter();            lv.setAdapter(mAdapter);        }        //这个回调方法是子线程;        @Override        protected String doInBackground(String... strings) {            //取第0个元素,就是url;            String netjson = NetWordUtils.getNetjson(strings[0]);            return netjson;        }    }    class MAdapter extends BaseAdapter {        @Override        public int getCount() {            return dataList.size();        }        @Override        public Object getItem(int i) {            return dataList.get(i);        }        @Override        public long getItemId(int i) {            return i;        }        @Override        public View getView(int i, View containerView, ViewGroup viewGroup) {            View view = View.inflate(MainActivity.this, R.layout.list_item, null);            TextView tv_name = (TextView) view.findViewById(R.id.tv_name);            ImageView iv = (ImageView) view.findViewById(R.id.iv);            tv_name.setText(dataList.get(i).getNews_summary());            /**             * getView方法每个条目显示的时候都会调用,所以我们在这个请求图片,并设置             *  把图片url传递给asyncTask             */            new MAsyncTaskImage(iv).execute(dataList.get(i).getPic_url());            return view;        }    }    class MAsyncTaskImage extends AsyncTask<String, Void, Bitmap> {        ImageView imageView;        public MAsyncTaskImage(ImageView imageView) {            this.imageView = imageView;        }        @Override        protected Bitmap doInBackground(String... strings) {            return NetWordUtils.getNetBitmap(strings[0]);        }        @Override        protected void onPostExecute(Bitmap bitmap) {            super.onPostExecute(bitmap);            imageView.setImageBitmap(bitmap);        }    }}
原创粉丝点击