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; }}
阅读全文
0 0
- LIstView多条目展示+XListView下拉刷新,上拉加载
- XListView下拉刷新,上拉加载和ListView多条目加载
- 下拉刷新上拉加载,XListView多条目加载,TabPageIndicator
- XListView多条目加载+TabPageIndicator+下拉刷新上拉加载
- Listview多条目加载和XListview下拉刷新控件
- XListView上拉加载和下拉刷新
- xlistview上拉刷新和下拉加载
- 上拉加载和下拉刷新(XListView)
- Xlistview上拉加载,下拉刷新、多条目展示以及获取系统时间
- XlistView基础运用(下拉刷新,上拉加载,listview优化)
- XlistView上拉刷新下拉加载
- xListView上拉刷新下拉加载
- xListView上拉加载下拉刷新
- XListView上拉加载,下拉刷新
- xlistview上拉加载下拉刷新
- XListView上拉加载下拉刷新
- XListView上拉刷新,下拉加载
- 上拉刷新--下拉加载XListView
- 2017首席创新官峰会:内外合力推进转型性创新!
- centos7 Qt5.9.1 undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
- ef增删改查
- POJ 2031 ZOJ 1718 Building a Space Station
- 数据库基础定义
- XListView下拉刷新,上拉加载和ListView多条目加载
- div宽高监控
- CABasicAnimation的使用方法(移动,旋转,缩放)
- node.js基础学习--IO-对象映射(fs,Buffer)
- 第一章:pip 安装 tar.gz 结尾的文件 和 .whl 结尾的文件
- Android开源库V
- 中西方的信仰差异
- VB.NET在WinCE5.0中异常转储试验
- Java 集合系列07之 Stack源码解析