ListView下拉刷新
来源:互联网 发布:如何打新 知乎 编辑:程序博客网 时间:2024/06/07 01:30
以后会经常用到下拉刷新和上拉刷新的,今天用了,就记录一下,方便以后的使用。
下载地址:https://github.com/chrisbanes/Android-PullToRefresh
1.导包
2.xml布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>3.Activity中:
public class MainActivity extends Activity implementsOnRefreshListener<ListView> {private MyHandler handler = new MyHandler();/** 从第三页开始显示吧 */private int current_head_index = 3;/** 后面是第三页开始 */private int current_foot_index = 4;private PullToRefreshListView mPullRefreshListView;/** 数据集合 */private ArrayList<String> data;/** 简单的适配器 */private ArrayAdapter<String> adapter;private boolean ishead = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.listview);data = new ArrayList<String>();addData();adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, data);mPullRefreshListView.setOnRefreshListener(this);/** 上下都刷新 */mPullRefreshListView.setMode(Mode.BOTH);mPullRefreshListView.getLoadingLayoutProxy(false, true).setPullLabel("下拉中");mPullRefreshListView.getLoadingLayoutProxy(false, true).setRefreshingLabel("刷新中");mPullRefreshListView.getLoadingLayoutProxy(false, true).setReleaseLabel("释放了");/** 需要listView */ListView actualListView = mPullRefreshListView.getRefreshableView();actualListView.setAdapter(adapter);actualListView.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// TODO Auto-generated method stub}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {// TODO Auto-generated method stub/** 如果第一条看得见 就下拉刷新 */if (firstVisibleItem == 0) {ishead = true;} else {ishead = false;}}});}private void addData() {if (current_head_index >= 1) {if (ishead) {int tempIndex = current_head_index * 10;for (int i = tempIndex; i > tempIndex - 10; i--) {data.add(0, i + "");}current_head_index--;} else {int tempIndex = current_foot_index * 10;for (int i = tempIndex - 10; i < tempIndex; i++) {data.add(i + "");}current_foot_index++;}}}@Overridepublic void onRefresh(PullToRefreshBase<ListView> refreshView) {// TODO Auto-generated method stubnew MyThread().start();}private class MyThread extends Thread {@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();try {sleep(3000);/** 让主线程更新UI */Message msg = handler.obtainMessage();handler.sendMessage(msg);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}private class MyHandler extends Handler {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);/** 更新数据 */addData();adapter.notifyDataSetChanged();mPullRefreshListView.onRefreshComplete();}}}
记得以下几个点:
1.用一个变量来标志请求数据是上拉还是下拉(在listView的setOnScrollListener() 的监听器中来监听是下拉还是上拉,如果第一条看见了,肯定下拉,前提是第一次的条目要很多,使得第一条会滚出屏幕!!!)
2.上拉的话,数据记得加在0处,下拉就直接加在后面了
3.差点忘记了,那个ListView 是这样得到的
ListView actualListView = mPullRefreshListView.getRefreshableView();
4.记得
adapter.notifyDataSetChanged();mPullRefreshListView.onRefreshComplete();
5.明天还要做别的不知道能不能搞定呢??
项目和支持库下载地址:
http://download.csdn.net/detail/yymonkeydo/8121035
listView代码中配置:
//滚动条的宽度istView.setScrollBarSize(3);//滚动条的背景图片为空listView.setDivider(null);//条目之间的距离listView.setDividerHeight(10);
0 0
- ListView下拉回弹刷新
- ListView下拉刷新
- listView下拉刷新2
- ListView 下拉刷新错误
- Android ListView下拉刷新
- listview下拉刷新
- listview实现下拉刷新
- ListView下拉刷新
- android Listview下拉刷新
- ListView下拉回弹刷新
- Android ListView下拉刷新
- 自定义ListView,下拉刷新
- listview 下拉刷新
- ListView下拉刷新
- ListView下拉刷新
- ListView实现下拉刷新
- ListView下拉回弹刷新
- Listview的下拉刷新
- 【REST 学些贴及公司培训简记】
- 混合编程MATLAB引擎的一些错误(error LNK2019: 无法解析的外部符号)
- 简易数字时钟软件详细制作过程
- visual studio2012常用快捷键
- nil、Nil与NULL区别
- ListView下拉刷新
- Bash的优点
- HDU 1325 POJ 1308 Is It A Tree? (并查集)
- u-boot-2014.10移植第11天----深入分析代码(六)
- 第10周项目2-M$psiz$y什么意思
- DOM窗口操作
- 第10周 项目1-3 控制符
- LeetCode[Linked List]: Remove Duplicates from Sorted List II
- JS创建对象