xlistview上下拉刷新
来源:互联网 发布:js获取时间并自动增加 编辑:程序博客网 时间:2024/04/28 10:24
xlistview的运用还是比较广泛的,与传统的listview相比又增加了上拉加载、下拉刷新的功能,展示数据时视觉效果良好。接下来就具体介绍一下xlistview的上下拉是如何实现的。
首先,需要在新建的工程中导入一个第三方依赖包,将之依赖到工程中,关于依赖包在github上搜索下载即可,简单快捷,当然自己封装也是可以的。在这里需要注意的是依赖包必须是library形式。
有了依赖包之后,就可以在布局文件中写布局了。
<com.limxing.xlistview.view.XListView android:id="@+id/xlv" android:layout_width="match_parent" android:layout_height="match_parent"/>
给控件一个id,方便在activity中找到它,然后就需要使avtivity实现定义好的接口:
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener
这个时候工程会报错,需要重写两个方法
@Override public void onRefresh() { } @Override public void onLoadMore() { }适配器里的相关操作也是非常重要的,在这里采用了多条目加载的方式:
public class MyBaseAdapter extends BaseAdapter { private Context context; private List<JavaBean.ListBean> list; //构造器 public MyBaseAdapter(Context context, List<JavaBean.ListBean> list) { this.context = context; this.list = list; } //上拉加载下拉刷新 public void LoadMore(List<JavaBean.ListBean> bean, boolean flag) { for (JavaBean.ListBean b : bean) { if (flag) { //下拉刷新 list.add(0, b); } else { //上拉加载 list.add(b); } } } @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 2; } //优化 @Override public View getView(int i, View view, ViewGroup viewGroup) { String[] arr = list.get(i).getPic().split("\\|"); if (i % 2 == 0) { view = View.inflate(context, R.layout.item_one, null); ImageView img_one_first = view.findViewById(R.id.img_one_first); ImageView img_one_second = view.findViewById(R.id.img_one_second); ImageLoader.getInstance().displayImage(arr[0], img_one_first, MyApplication.getOptions()); ImageLoader.getInstance().displayImage(arr[1], img_one_second, MyApplication.getOptions()); } else { view = View.inflate(context, R.layout.item_two, null); ImageView img_two_first = view.findViewById(R.id.img_two_first); ImageView img_two_second = view.findViewById(R.id.img_two_second); ImageView img_two_third = view.findViewById(R.id.img_two_third); ImageView img_two_forth = view.findViewById(R.id.img_two_forth); ImageLoader.getInstance().displayImage(arr[0], img_two_first, MyApplication.getOptions()); ImageLoader.getInstance().displayImage(arr[1], img_two_second, MyApplication.getOptions()); ImageLoader.getInstance().displayImage(arr[0], img_two_third, MyApplication.getOptions()); ImageLoader.getInstance().displayImage(arr[1], img_two_forth, MyApplication.getOptions()); } return view; }}在MainActivity里的总体代码如下:
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{ private XListView xlv; private int pager; private boolean flag; private List<JavaBean.ListBean> list; private MyBaseAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 xlv = (XListView) findViewById(R.id.xlv); getData(); xlv.setXListViewListener(this); xlv.setPullLoadEnable(true); } //请求网络数据 public void getData(){ getInternetData("网址XXXXXXXXXX"); } //请求数据 public void getInternetData(String path){ final String[] results = new String[1]; RequestParams params = new RequestParams(path); x.http().get(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { results[0] =result; } //请求异常后的回调方法 @Override public void onError(Throwable ex, boolean isOnCallback) { } //主动调用取消请求的回调方法 @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { if (results[0]==null){//网络请求失败 return; } //实例化gson Gson gson=new Gson(); //解析json字符串 JavaBean bean=gson.fromJson(results[0],JavaBean.class); list=new ArrayList<JavaBean.ListBean>(); list=bean.getList(); if (adapter==null){ //设置适配器 adapter=new MyBaseAdapter(MainActivity.this,list); xlv.setAdapter(adapter); }else { //实现上下拉 adapter.LoadMore(list,flag); } } }); } @Override public void onRefresh() { flag=true; pager++; getData(); xlv.stopRefresh(true); } @Override public void onLoadMore() { flag=false; pager++; getData(); xlv.stopLoadMore(); }
以上就可以实现xlistview的上下拉刷新了。
如果你喜欢这篇博客或这些代码帮助了你,请留言~
阅读全文
1 0
- xlistview上下拉刷新
- XListView的上下拉刷新
- Android使用XlistView做出上下拉刷新功能
- XListview 上拉刷新
- xlistview 上下拉加载代码
- Xlistview实现上下拉动刷新
- viewpager+handler轮播;xlistview上下拉刷新;webView显示一个网页
- ListView 上下拉刷新
- 上下拉刷新
- ListView上下拉刷新
- 上下拉刷新
- 上下拉刷新
- 上下拉刷新
- 上下拉刷新
- recycleview上下拉刷新
- RecyclerView上下拉刷新
- 上下拉刷新
- 上拉下拉刷新XListView
- web界面上点击和直接调用的区别
- iOS 关于友盟微信分享成功回调不走的问题
- JQ实现滚动监听锚点跳转
- LVS(三)——高可用
- 模拟队列-先进先出
- xlistview上下拉刷新
- 【C语言·字符串】关于字符串的输出问题
- 解决Cannot change version of project facet Dynamic web module to 2.3或者2.5
- C++面试题
- 我的python学习笔记、导入类
- (二)文件I/O 2.open函数说明
- 直接插入排序
- 浅谈Java中的对象和对象引用
- mycat2.0配置文件datasource.yml参数说明(switchType)