android 下拉刷新上拉加载更多(即微博效果)

这个东西我刚刚接触的时候搞了很久,为了实现这个功能我在网上翻了很多资料,其中有很多牛人用各种各样的想法做了出来,但我试了之后还是发现外国佬做的PullToRefresh这个东西最稳定,bug小,只要稍微修改下源文件就能满足需求。

去百度之后可以找到一个修改版的PullToRefresh,里面有几种列表的刷新使用,有scrollview,listview,gridview,webview,expandableListview的使用,但例子说明很少,所以在这记录下一些学习过程。

首先打开工程后如下

我们要看只是第一个包,其他两个直接copy到你的工程就行,当然第二个包跟第一个包有联系,是一一对应的,所以你用哪个就copy哪个就行了

以listview为例,在activity的oncreate方法中只需添加如下代码就可以了

mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);actualListView = mPullRefreshListView.getRefreshableView();这样就可以得到一个真正的listview,剩下的操作方法跟listview的一样了,当然还要为其添加刷新监听,这个得自己重写一点源码,源码是不区分是下拉还是上拉的mPullRefreshListView.setOnRefreshListener(new OnRefreshListener(){@Overridepublic void onRefresh(int currentMode) {// TODO Auto-generated method stubif(currentMode==1)//header{new GetDataTask().execute("header");mPullRefreshListView.getHeader().setRefreshingLabel("更新于:"+refreshTime());}else //footer{new GetDataTask().execute("footer");}}});其中的GetDataTask是一个继承了AsyncTask的类,也就是一个线程,由此可以发现其实刷新的方法就是新开线程。。至于AsyncTask的使用方法很简单,就不写了。。最后附上GetDataTask类

private class GetDataTask extends AsyncTask<String, Integer, String[]> {@Overrideprotected String[] doInBackground(String… params) {// Simulates a background job.if(params[0].equals("header")){try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch block}}else if(params[0].equals("footer")){try {Thread.sleep(2000);// TODO Auto-generated catch block} catch (InterruptedException e) {// TODO Auto-generated catch block}}return params;}@Overrideprotected void onPostExecute(String[] result) {if(result[0].equals("header")&&isOpenNet){}else if(result[0].equals("footer")&&isOpenNet){}mPullRefreshListView.onRefreshComplete();super.onPostExecute(result);}}由于是从工程中拉出来的出于保密协议只能给个大概的框架了。。。最后还要在xml中标记使用的权限,如只上拉,,只下拉,上下拉都要<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=""android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><!– The PullToRefreshListView replaces a standard ListView widget. –><com.stay.pull.lib.PullToRefreshListViewxmlns:ptr=""android:id="@+id/pull_refresh_list"android:layout_width="fill_parent"android:layout_height="fill_parent"ptr:mode="both"/></RelativeLayout>其中ptr属性是就是权限设置,both是上下拉,pullUpFromBottom就是上拉,pullUpFromUp就是下拉(如果没记错的话。。哈哈!)

相信优美的生命,就是一曲无字的挽歌,

android 下拉刷新上拉加载更多(即微博效果)

相关文章:

你感兴趣的文章:

标签云: