XListView下拉刷新,上拉加载和ListView多条目加载

来源:互联网 发布:ghost32软件详解 编辑:程序博客网 时间:2024/06/14 14:49
自定义类,继承Application,加载缓冲
public class MyApplication extends Application {    @Override    public void onCreate() {        super.onCreate();        File file = new File(Environment.getExternalStorageDirectory().getPath()+"Images0718");        ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this)                .memoryCacheExtraOptions(80, 80)                .memoryCacheSize(2 * 1024 * 1024)                .threadPoolSize(3)                .threadPriority(1000)                .diskCacheFileNameGenerator(new Md5FileNameGenerator())                .diskCacheSize(50 * 1024 * 1024)                .diskCache(new UnlimitedDiskCache(file))                .build();        ImageLoader.getInstance().init(build);    }}
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {    private XListView xlistview;    private int index = 1;    private boolean boo = false;    private MyBaseAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        xlistview = (XListView) findViewById(R.id.xlistview);        xlistview.setPullLoadEnable(true);        xlistview.setXListViewListener(this);        getData("http://apis.juhe.cn/cook/query.php", "26ef57b6568ddb188773d1c683879566", index +                "", 5 + "", "鱼香肉丝");    }    private void getData(String path, String key, String pn, String rn, String name) {        new AsyncTask<String, Void, String>() {            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                if (s != null) {                    Gson gson = new Gson();                    MenuInfo info = gson.fromJson(s, MenuInfo.class);//MenuInfo是自定义JAVABean                    List<MenuInfo.ResultBean.DataBean> list = info.getResult().getData();                    if (adapter == null) {                        adapter = new MyBaseAdapter(list);                        xlistview.setAdapter(adapter);                    } else {                        adapter.addData(list, boo);                        adapter.notifyDataSetChanged();                    }                }            }            @Override            protected String doInBackground(String... params) {                try {                    String path = params[0];                    String key = params[1];                    String pn = params[2];                    String rn = params[3];                    String name = params[4];                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    connection.setRequestMethod("POST");                    connection.setConnectTimeout(5000);                    connection.setReadTimeout(5000);                    OutputStream os = connection.getOutputStream();                    os.write(("menu=" + name + "&key=" + key + "&pn=" + pn + "&rn=" + rn).getBytes());                    os.flush();                    os.close();                    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {                        InputStream is = connection.getInputStream();                        return StringTools.getJson(is);                    }                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }        }.execute(path, key, pn, rn, name);    }    //    下拉刷新    @Override    public void onRefresh() {        ++index;        getData("http://apis.juhe.cn/cook/query.php", "26ef57b6568ddb188773d1c683879566", index +                "", 5 + "", "鱼香肉丝");        boo = true;        xlistview.stopRefresh(true);    }    //    上啦加载    @Override    public void onLoadMore() {        ++index;        getData("http://apis.juhe.cn/cook/query.php", "26ef57b6568ddb188773d1c683879566", index +                "", 5 + "", "鱼香肉丝");        boo = false;        xlistview.stopLoadMore();    }    //    自定义适配器    class MyBaseAdapter extends BaseAdapter {        private List<MenuInfo.ResultBean.DataBean> list;        public MyBaseAdapter(List<MenuInfo.ResultBean.DataBean> list) {            this.list = list;        }        //        自定义方法增加数据,true的时候从0下标开始增加,否则默认从listview的最后面加载数据        public void addData(List<MenuInfo.ResultBean.DataBean> data, boolean b) {            for (MenuInfo.ResultBean.DataBean bean : data) {                if (b)                    list.add(0, bean);                else                    list.add(bean);            }        }        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int position) {            return list.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder0 holder0 = null;            ViewHolder1 holder1 = null;//            得到布局类型            int type = getItemViewType(position);//            设置布局            switch (type) {                case 0:                    if (convertView == null) {                        convertView = View.inflate(MainActivity.this, R.layout.item0, null);                        holder0 = new ViewHolder0();                        holder0.img = (ImageView) convertView.findViewById(R.id.img);                        holder0.tv = (TextView) convertView.findViewById(R.id.textview);                        convertView.setTag(holder0);                    } else {                        holder0 = (ViewHolder0) convertView.getTag();                    }                    break;                case 1:                    if (convertView == null) {                        convertView = View.inflate(MainActivity.this, R.layout.item1, null);                        holder1 = new ViewHolder1();                        holder1.img = (ImageView) convertView.findViewById(R.id.img);                        holder1.tv = (TextView) convertView.findViewById(R.id.textview);                        convertView.setTag(holder1);                    } else {                        holder1 = (ViewHolder1) convertView.getTag();                    }                    break;            }//            给每一个布局设置数据            switch (type) {                case 0:                    holder0.tv.setText(list.get(position).getIngredients());                    DisplayImageOptions build = new DisplayImageOptions.Builder()                            .cacheInMemory(true)                            .cacheOnDisk(true)                            .displayer(new CircleBitmapDisplayer())//设置显示的图片成圆形                            .build();                    ImageLoader.getInstance().displayImage(list.get(position).getAlbums().get(0),                            holder0.img, build);                    break;                case 1:                    holder1.tv.setText(list.get(position).getIngredients());                    DisplayImageOptions build1 = new DisplayImageOptions.Builder()                            .cacheInMemory(true)                            .cacheOnDisk(true)                            .displayer(new CircleBitmapDisplayer())//设置显示的图片成圆形                            .build();                    ImageLoader.getInstance().displayImage(list.get(position).getAlbums().get(0),                            holder1.img, build1);                    break;            }            return convertView;        }        // 设置每一个item的布局        @Override        public int getItemViewType(int position) {            if (position % 2 == 0)                return 0;            else                return 1;        }        //        这是布局类型的总数        //这是return 2的话,下标就是0,1;        @Override        public int getViewTypeCount() {            return 2;        }    }    class ViewHolder0 {        ImageView img;        TextView tv;    }    class ViewHolder1 {        ImageView img;        TextView tv;    }}

原创粉丝点击