XListView+对条目

来源:互联网 发布:淘宝买全民晒单 编辑:程序博客网 时间:2024/06/04 23:32
package com.bwie.skn.songkenan20170911;import android.graphics.Bitmap;import android.graphics.BitmapFactory;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.TextView;import com.bwie.skn.songkenan20170911.XListView.XListView;import com.bwie.skn.songkenan20170911.bean.JsonBean;import com.google.gson.Gson;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;import java.util.List;public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{    private XListView xlv;    private List<JsonBean.DataBean> list = new ArrayList<>();    private MyAdapter myAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化控件        xlv = (XListView) findViewById(R.id.xlv);        xlv.setPullLoadEnable(true);        xlv.setXListViewListener(this);        //适配器        myAdapter = new MyAdapter();        xlv.setAdapter(myAdapter);        //获取数据        initData();    }    //创建适配器    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 i, View view, ViewGroup viewGroup) {            ViewHolder0 vh0 = null;            ViewHolder1 vh1 = null;            int type = getItemViewType(i);            if(view==null){                    //多条目判断                    switch(type){                            case 0:                                vh0 = new ViewHolder0();                                view = View.inflate(MainActivity.this,R.layout.lv_viewholder0,null);                                vh0.iv =(ImageView) view.findViewById(R.id.iv);                                vh0.tv = (TextView) view.findViewById(R.id.tv);                                view.setTag(vh0);                            break;                            case 1:                                vh1 = new ViewHolder1();                                view = View.inflate(MainActivity.this,R.layout.lv_viewholder1,null);                                vh1.tv = (TextView) view.findViewById(R.id.tv);                                view.setTag(vh1);                            break;                        }            }else{                    switch(type){                            case 0:                                vh0 = (ViewHolder0) view.getTag();                            break;                            case 1:                                vh1 = (ViewHolder1) view.getTag();                            break;                        }            }   //给控件赋值                switch(type){                        case 0:                            new MyAsyncTaskImage(vh0.iv).execute(list.get(i).getUserImg());                            vh0.tv.setText(list.get(i).getTitle());                        break;                        case 1:                            vh1.tv.setText(list.get(i).getTitle());                        break;                    }            return view;        }        //条目类型数量        @Override        public int getViewTypeCount() {            return 2;        }        //条目类型        @Override        public int getItemViewType(int position) {            if(position%2==0){                return 1;            }else{                return 0;            }        }    }    //容器    class ViewHolder0{        ImageView iv;        TextView tv;    }    class ViewHolder1{        TextView tv;    }    //获得数据    private void initData() {        new MyAsyncTaskString().execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");    }    //网络获取数据    class MyAsyncTaskString extends AsyncTask<String,Void,String>{        @Override        protected String doInBackground(String... strings) {            try {                //获得路径                URL url = new URL(strings[0]);                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                //判断是否连接成功                int responseCode = urlConnection.getResponseCode();                if(responseCode==200){                    InputStream inputStream = urlConnection.getInputStream();                    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));                    StringBuffer buffer = new StringBuffer();                    String str = "";                    while ((str=reader.readLine())!=null){                        buffer.append(str);                    }                    return buffer.toString();                }            } catch (MalformedURLException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            Gson gson = new Gson();            JsonBean jsonBean = gson.fromJson(s, JsonBean.class);            List<JsonBean.DataBean> data = jsonBean.getData();            list.addAll(data);            myAdapter.notifyDataSetChanged();        }    }    class MyAsyncTaskImage extends AsyncTask<String,Void,Bitmap>{        ImageView iv;        public MyAsyncTaskImage(ImageView iv) {            this.iv = iv;        }        @Override        protected Bitmap doInBackground(String... strings) {            try {                //获得路径                URL url = new URL(strings[0]);                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                //判断是否连接成功                int responseCode = urlConnection.getResponseCode();                if(responseCode==200){                    InputStream inputStream = urlConnection.getInputStream();                    Bitmap bitmap = BitmapFactory.decodeStream(inputStream);                    return bitmap;                }            } catch (MalformedURLException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(Bitmap bitmap) {            iv.setImageBitmap(bitmap);        }    }    //关闭    public void onLoad(){        xlv.stopRefresh();        xlv.stopLoadMore();        xlv.setRefreshTime("刚刚");    }    /**     * 下拉刷新     */    @Override    public void onRefresh() {        list.clear();        initData();        onLoad();    }    /**     * 上拉加载     */    @Override    public void onLoadMore() {        initData();        onLoad();    }}
原创粉丝点击