android下拉刷新之PullToRefreshListView(一)
来源:互联网 发布:php 信鸽推送 编辑:程序博客网 时间:2024/04/29 21:56
下拉刷新的实现方式有很多,本篇主要是使用线程的下拉刷新工具来实现下拉刷新
一、使用PullToRefreshListView实现需要先下载所需要的工程(https://github.com/chrisbanes/Android-PullToRefresh)
下载好之后需要导入项目中的Library工程,添加工程到Eclipse中,然后如图配置
然后,在项目的布局中,这样使用
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pull_refresh_list" android:layout_width="fill_parent" android:layout_height="fill_parent"/>
在布局文件完成之后,就可以编写界面代码了
public class MainActivity extends Activity {private PullToRefreshListView mListView;private ArrayList<String> mListItems; //显示的数据private ArrayAdapter<String> mAdapter; //显示的adapterprivate TextView mTextTitle;private int mCurrentNum = 0;private Handler mHandle;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mHandle =new Handler(this.getMainLooper());mListView = (PullToRefreshListView)findViewById(R.id.activity_main_pull_refresh_list);mTextTitle = (TextView)findViewById(R.id.activity_main_text_title);mListItems = new ArrayList<String>();for(int i = mCurrentNum;i < mCurrentNum+10;i++){mListItems.add(i+"");}//新建adaptermAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListItems); //绑定adaptermListView.setAdapter(mAdapter);initListener();}private void initListener(){//刷新方法,当设置Mode.BOTH时,使用OnRefreshListener2//当不用Mode.BOTH双向拉动刷新时,只需要使用mListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {@Overridepublic void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {mTextTitle.setText("下拉刷新");//这里是下拉吗downpullrefreshData();}@Overridepublic void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {mTextTitle.setText("上拉刷新");Log.i("ceshi", "上啦刷新");//这里是上啦吗uppullrefreshData();}});//mListView.setMode(Mode.PULL_FROM_START);//mListView.setOnRefreshListener(new OnRefreshListener<ListView>() {////@Override//public void onRefresh(PullToRefreshBase<ListView> refreshView) {////}//});//当下拉到显示最后一项时mListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {@Overridepublic void onLastItemVisible() {Log.i("ceshi", "最后一部分可以看到了");uppullrefreshData();}});//setOnLastItemVisibleListener(OnLastItemVisibleListener listener):设置是否到底部监听器;/** * Mode.BOTH:同时支持上拉下拉 *Mode.PULL_FROM_START:只支持下拉Pulling Down *Mode.PULL_FROM_END:只支持上拉Pulling Up */mListView.setMode(Mode.BOTH);}/** * 下拉刷新数据,这里是刷新,会清空之前的数据 */private void downpullrefreshData(){new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}mListItems.clear();for(int i = 0;i < 10;i++){mListItems.add(i+""+",下拉刷新");}refreshPullRefreshAdapter();}}).start();}/** * 上拉刷新数据,这里是添加 */private void uppullrefreshData(){new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}for(int i = mCurrentNum;i < mCurrentNum+10;i++){mListItems.add(i+""+",上拉刷新");}mCurrentNum +=10;refreshPullRefreshAdapter();}}).start();}/** * 刷新显示 */private void refreshPullRefreshAdapter(){mHandle.post(new Runnable() {@Overridepublic void run() {mAdapter.notifyDataSetChanged();mListView.onRefreshComplete();}});}}至此,一个最基本的下拉刷新+上拉加载更多就完成了,在写完之后,针对目前的完成状况
可以预见,目前的缺陷是:
1、还没有完成下拉刷新和上拉刷新时的动画及文字的自定义
2、虽然有了上拉到显示最后一项时,立刻加载下一页的功能,但是如果再进行需求的灵活变通时,就
存在一定的局限性,例如在显示到倒数第五个时就加载下一页,这样在网速没有问题时可以让用户毫无阻力地显示下一页,但是这种实现就目前看来可能比较困难,这需要对PullToRefreshListView的进一步了解才能知道能否实现
0 0
- android下拉刷新之PullToRefreshListView(一)
- android下拉刷新之PullToRefreshListView(二)
- PullToRefreshListView进阶(一)----->下拉刷新
- PullToRefreshListView下拉刷新
- PullToRefreshListView实现下拉刷新
- Android中PullToRefreshListView的下拉刷新,下拉加载的实现
- Android高级控件系列二之第三方控件PullToRefreshListView下拉刷新的使用
- 下拉刷新上拉加载之PullToRefreshListView的用法
- Android自定义上拉加载下拉刷新PullToRefreshListView
- PullreFreshLibrary(PullToRefreshListView)上拉刷新,下拉加载(—)
- PullToRefreshListView进阶(三)----->上拉加载、下拉刷新!
- 下拉刷新和上拉加载(pulltorefreshlistview)
- PullToRefreshListView简单实现下拉刷新、下拉加载
- PullToRefreshListView上拉刷新和下拉刷新
- IOS之EGORefreshTableHeaderView下拉刷新(一)
- Android控件(一)下拉刷新:SwipeRefreshLayout
- 4.2.5 Android 下拉刷新的几个方法:SwipeRefreshLayout,android-Ultra-Pull-To-Refresh(ptr),PullToRefreshListView
- 4.5.3 Go Android 下拉刷新的整理:SwipeRefreshLayout,android-Ultra-Pull-To-Refresh(ptr),PullToRefreshListView
- Css 解决各种兼容问题
- 黑马程序员——IO流—整理笔记
- BZOJ 2969 矩形粉刷 期望
- 影像阅读
- mybatis的NumberFormatException错误
- android下拉刷新之PullToRefreshListView(一)
- 创建bitmap时的优化处理
- tomcat结合nginx使用小结
- 数学之美笔录(3):隐含马尔可夫模型(详解)
- Java程序设计日志一
- [华为机试练习题]59.奖金提成
- JAVA-反射-getGenericSuperclass()介绍
- 针对吞吐量优化的架构
- 反向投影backproject的直观理解