吹在前面的话:ListView下刷新刷功能相信从事Android开发的猿友们并不陌生,包括现在Google亲儿子SwipeRefreshLayout实现效果在一些APP上也能看见(不过个人不喜欢官方的刷新效果)。本文就带领一些刚入门android的朋友或者一起爱分享的朋友来简单的实现ListView的下拉刷新和左滑删除效果。
一、本文主要内容:
- 使用PullToRefresh完成ListView下拉、上拉刷新;
- 扩展PullToRefresh完美的实现ListView左滑删除效果; 注意:本文中的PullToRefresh并非完整的开源库,个人把一些不需要的和平时无相关的类已删除。看起来更加精简,更加容易理解。
- 附上PullToRefresh源码库下载地址:http://download.csdn.net/detail/jaynm/9670737
二、先看效果:
1.ListView下拉刷新、上拉加载更多:
2.ListView下拉刷新、上拉加载更多、左滑删除:
三、实现代码:
- 实现ListView下拉刷新:
至于PullToRefreshBase类,自己修改过源码,代码太长这里就不贴出来,自己可以下载Demo自己仔细阅读,主要看如何应用到自己项目中:
/**
* Created by caobo on 2016/11/1 0001.
* ListView下拉刷新、上拉加载更多
*/
public class ListViewActivity extends Activity implements PullToRefreshBase.OnRefreshListener<ListView> {
private PullToRefreshListView refreshlistview;
private ListView mListView;
//添加数据List集合
//TODO:这里使用了LinkedList方便Demo中添加数据使用,实际项目中使用ArrayList即可。
private LinkedList<String> pullData;
private ListAdapter adapter;
//标记下拉index
private int pullDownIndex = 0;
//标记上拉index
private int pullUpIndex = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listview);
pullData = new LinkedList<>();
refreshlistview = (PullToRefreshListView) findViewById(R.id.refreshlistview);
refreshlistview.setPullLoadEnabled(false);
refreshlistview.setScrollLoadEnabled(true);
refreshlistview.setOnRefreshListener(this);
mListView = refreshlistview.getRefreshableView();
adapter = new ListAdapter(getData());
mListView.setAdapter(adapter);
refreshlistview.onRefreshComplete();
}
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
onPullDown();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
onPullUp();
}
/**
* 预加载初始化数据List
* @return
*/
public List<String> getData() {
for (int i = 1; i <= 20; i++) {
pullData.add("默认ListView数据" + i);
}
return pullData;
}
/**
* 下拉刷新添加数据到List集合
*/
public void onPullDown() {
pullData.addFirst("下拉刷新数据" + pullDownIndex);
pullDownIndex++;
refreshlistview.onRefreshComplete();
adapter.notifyDataSetChanged();
}
/**
* 上拉加载添加数据到List集合
*/
public void onPullUp() {
pullData.addLast("上拉加载数据" + pullUpIndex);
pullUpIndex++;
refreshlistview.onRefreshComplete();
adapter.notifyDataSetChanged();
}
public void onBackClick(View view){
finish();
}
}
是不是以上操作还是很简单的就完成了ListView下拉刷新,上拉加载更多。
XML布局文件也很简单,只需要引用PullToRefreshListView的地址即可:
这样我们就完成了一个ListView列表的下拉刷新和上拉加载更多,个人认为PullToRefresh这个库还是很强大的。