xlistview刷新加载+Drawlayout+多条目

来源:互联网 发布:淘宝复制链接没有响应 编辑:程序博客网 时间:2024/05/21 22:54
package com.example.myapplication;import android.annotation.SuppressLint;import android.graphics.Bitmap;import android.os.AsyncTask;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;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 android.widget.Toast;import com.google.gson.Gson;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import com.nostra13.universalimageloader.core.assist.ImageScaleType;import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{    private static final String JSON_URL = "https://www.toutiao.com/api/pc/focus/";    private List<Bean.DataBean.PcFeedFocusBean> list = new ArrayList<Bean.DataBean.PcFeedFocusBean>();    private ListView lv;    private XListView xlv;    private MyAdpter adpter;    private DrawerLayout drawer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        lv = (ListView) findViewById(R.id.lv);        drawer = (DrawerLayout) findViewById(R.id.drawer);        intview();        new AsyncTask<String, Integer, String>() {            @Override            protected String doInBackground(String... strings) {                String json = new NetWork().getJson(JSON_URL);                return json;            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                Gson gson = new Gson();                Bean bean = gson.fromJson(s, Bean.class);                list = bean.getData().getPc_feed_focus();                adpter = new MyAdpter();                xlv.setAdapter(adpter);            }        }.execute();    }    private void intview() {        xlv = findViewById(R.id.xlv);        xlv.setPullLoadEnable(true);        xlv.setPullRefreshEnable(true);        xlv.setXListViewListener(this);    }    public void onLode(){        xlv.stopLoadMore();        xlv.stopRefresh();        xlv.setRefreshTime("刚刚");    }//刷新    @Override    public void onRefresh() {        Toast.makeText(MainActivity.this,"开始刷新",Toast.LENGTH_SHORT).show();        new AsyncTask<String,Integer,String>(){            @Override            protected String doInBackground(String... strings) {                String json = new NetWork().getJson(JSON_URL);                return json;            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                Gson gson = new Gson();                Bean bean = gson.fromJson(s, Bean.class);                list = bean.getData().getPc_feed_focus();                adpter = new MyAdpter();                xlv.setAdapter(adpter);                onLode();            }        }.execute();    }//加载    @Override    public void onLoadMore() {        Toast.makeText(MainActivity.this,"开始加载",Toast.LENGTH_SHORT).show();        new AsyncTask<String,Integer,String>(){            @Override            protected String doInBackground(String... strings) {                String json = new NetWork().getJson(JSON_URL);                return json;            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                Gson gson = new Gson();                Bean bean = gson.fromJson(s, Bean.class);                List<Bean.DataBean.PcFeedFocusBean> data = bean.getData().getPc_feed_focus();                list.addAll(data);                adpter.notifyDataSetChanged();                onLode();            }        }.execute();    }    private class MyAdpter extends BaseAdapter {        private final int TYPE_1 = 0;        private final int TYPE_2 = 1;        private final int TYPE_3 = 2;        @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 int getViewTypeCount() {            return 3;        }        @Override        public int getItemViewType(int position) {            if (position % 3 == 0) {                return TYPE_1;            } else if (position % 3 == 1) {                return TYPE_2;            } else {                return TYPE_3;            }        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            int type = getItemViewType(i);            switch (type) {                case 0:                    ViewHolder holder;                    if (view == null) {                        holder = new ViewHolder();                        view = View.inflate(MainActivity.this, R.layout.layout, null);                        holder.img = view.findViewById(R.id.img);                        holder.tv = view.findViewById(R.id.tv);                        view.setTag(holder);                    } else {                        holder = (ViewHolder) view.getTag();                    }                    holder.tv.setText(list.get(i).getTitle());                    ImageLoader.getInstance().displayImage("http:" + list.get(i).getImage_url(), holder.img);                    break;                case 1:                    ViewHolder1 holder1;                    if (view == null) {                        holder1 = new ViewHolder1();                        view = View.inflate(MainActivity.this, R.layout.layout2, null);                        holder1.img = view.findViewById(R.id.img);                        view.setTag(holder1);                    } else {                        holder1 = (ViewHolder1) view.getTag();                    }                    DisplayImageOptions build = new DisplayImageOptions.Builder()                            .showImageOnLoading(R.mipmap.ic_launcher) //设置图片在下载期间显示的图片                            .showImageForEmptyUri(R.mipmap.ic_launcher)//设置图片Uri为空或是错误的时候显示的图片                            .showImageOnFail(R.mipmap.ic_launcher)  //设置图片加载/解码过程中错误时候显示的图片                            .cacheInMemory(true)//设置下载的图片是否缓存在内存中                            .cacheOnDisc(true)//设置下载的图片是否缓存在SD卡中                            .considerExifParams(true)  //是否考虑JPEG图像EXIF参数(旋转,翻转)                            .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示                            .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型//                            //  .decodingOptions(android.graphics.BitmapFactory.Options decodingOptions)//设置图片的解码配置                            //.delayBeforeLoading(int delayInMillis)//int delayInMillis为你设置的下载前的延迟时间                            //设置图片加入缓存前,对bitmap进行设置                            //.preProcessor(BitmapProcessor preProcessor)                            .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位                            .displayer(new RoundedBitmapDisplayer(100))//是否设置为圆角,弧度为多少                            .build();                    ImageLoader.getInstance().displayImage("http:" + list.get(i).getImage_url(), holder1.img,build);                    break;                case 2:                    ViewHolder2 holder2;                    if (view == null) {                        holder2 = new ViewHolder2();                        view = View.inflate(MainActivity.this, R.layout.layout3, null);                        holder2.tv = view.findViewById(R.id.tv);                        view.setTag(holder2);                    } else {                        holder2 = (ViewHolder2) view.getTag();                    }                    holder2.tv.setText(list.get(i).getTitle());                    break;            }            return view;        }    }    class ViewHolder {        ImageView img;        TextView tv;    }    class ViewHolder1 {        ImageView img;    }    class ViewHolder2 {        TextView tv;    }}
<resources>    <string name="app_name">Gaoxiangxue</string>    <string name="xlistview_header_hint_normal">下拉刷新</string>    <string name="xlistview_header_hint_ready">松开刷新数据</string>    <string name="xlistview_header_hint_loading">正在加载...</string>    <string name="xlistview_header_last_time">上次更新时间:</string>    <string name="xlistview_footer_hint_normal">查看更多</string>    <string name="xlistview_footer_hint_ready">松开载入更多</string>    <string-array name="goodsType">        <item>新闻</item>        <item>关注</item>        <item>动态</item>        <item>设置</item>    </string-array></resources>

原创粉丝点击