PullScrollView,PullListView, PullGridView 等进入自动下拉刷新
来源:互联网 发布:西安网络推广外包 编辑:程序博客网 时间:2024/06/16 05:11
看这个解决方法的前提是你已经使用过pull_library的架包
关于这个问题,开始我查过资料发现都不是很理想,下边通过自己研究整理出一个解决方案供参考,如有更好的方法欢迎交流指正。
其实PullScrollView,PullListView,PullGridView等下拉自动刷新都是类似的,下边就以PullScrollView为例说明,废话不多说,直接上代码:
import android.content.Context;import android.os.Handler;import android.util.AttributeSet;import com.handmark.pulltorefresh.library.PullToRefreshScrollView;public class CustomPullToRefreshScrollView extends PullToRefreshScrollView{ /** * 默认等待时间 */ private static final long DEFAULT_DELAYMILLIS = 300; private Handler handler; public CustomPullToRefreshScrollView(Context context) { super(context); } public CustomPullToRefreshScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomPullToRefreshScrollView(Context context, Mode mode) { super(context, mode); } public CustomPullToRefreshScrollView(Context context, Mode mode, AnimationStyle style) { super(context, mode, style); } /** * 首次进入实现自动刷新 * @author ttarfall * @date 2015-7-10 下午4:40:01 */ public void setAutoRefreshing() { setAutoRefreshing(DEFAULT_DELAYMILLIS); } /** * 自动下拉刷新 * @author ttarfall * @date 2015-7-20 2015-7-20 * @param delayMillis 自动启动前等待时间 */ public void setAutoRefreshing(long delayMillis) { setRefreshing(delayMillis, Mode.PULL_FROM_START); } /** * 设置自动上拉刷新 * @author ttarfall * @date 2015-8-10 上午10:02:02 */ public void setAutoUpRefreshing() { setAutoUpRefreshing(DEFAULT_DELAYMILLIS); } /** * 自动上拉刷新 * @author ttarfall * @date 2015-8-10 上午10:15:38 * @param delayMillis 等待时间 */ public void setAutoUpRefreshing(long delayMillis) { setRefreshing(delayMillis, Mode.PULL_FROM_END); } private void setRefreshing(long delayMillis, Mode mode) { if(delayMillis<DEFAULT_DELAYMILLIS) delayMillis = DEFAULT_DELAYMILLIS; getHeaderAndFooter(delayMillis, mode); } /** * 根据状态决定是否启动自动刷新 * @param delayMillis * @param mode */ private void getHeaderAndFooter(long delayMillis, final Mode mode){ if (handler == null) handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { switch (mode) { case PULL_FROM_START: if (getHeaderSize() == 0) { getHeaderAndFooter(DEFAULT_DELAYMILLIS, mode); } else { startRefreshing(DEFAULT_DELAYMILLIS, mode); } break; case PULL_FROM_END: if (getFooterSize() == 0) { getHeaderAndFooter(DEFAULT_DELAYMILLIS, mode); } else { startRefreshing(DEFAULT_DELAYMILLIS, mode); } break; default: break; } } }, delayMillis); } /** * 启动自动刷新 * @param delayMillis * @param mode */ private void startRefreshing(long delayMillis, final Mode mode){ if (handler == null) handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { switch (mode) { case PULL_FROM_START: setCurrentMode(mode); smoothScrollTo(-getHeaderSize() * 2); setRefreshing(); break; case PULL_FROM_END: setCurrentMode(mode); smoothScrollTo(getFooterSize() * 2); setRefreshing(); break; default: break; } } }, delayMillis); }}
在Activity中代码:
refreshScrollView=(CustomPullToRefreshScrollView)findViewById(R.id.refreshScrollView);
refreshScrollView.setAutoRefreshing();
“`
注意:这里在PullToRefreshBase添加setCurrentMode的方法。
1 0
- PullScrollView,PullListView, PullGridView 等进入自动下拉刷新
- 使用RxJava实现PullScrollView,PullListView, PullGridView 等进入自动下拉刷新
- SwipeRefreshLayout 首次进入界面自动下拉刷新
- Android自定义PullListView下拉刷新,上拉加载更多分页数据
- pullGridView
- 自定义SwpieRefreshLayout(进入页面自动刷新,下拉刷新,点击加载更多)
- 自动下拉刷新
- recyclerview下拉自动刷新
- 下拉刷新进页面自动刷新
- 简单的自动刷新或者下拉刷新
- 官方下拉刷新控件SwipeRefreshLayout自动刷新
- Android打造(ListView、GridView等)通用的下拉刷新、上拉自动加载的组件
- 【转android】(ListView、GridView等)通用的下拉刷新、上拉自动加载的组件
- Android打造(ListView、GridView等)通用的下拉刷新、上拉自动加载的组件
- Android打造(ListView、GridView等)通用的下拉刷新、上拉自动加载的组件
- 超级ListView,包括下拉刷新,自动翻页加载数据,异步下载、加载图片缓存等
- Android打造(ListView、GridView等)通用的下拉刷新、上拉自动加载的组件
- PullScrollView进阶(一)----->图片下拉回弹
- 迭代器失效问题(转)
- Joint关节
- 报错Application windows are expected to have a root view controller at the end of application launc
- leetcode-二分搜索:Search in Rotated Sorted Array
- php mail函数发送邮件header过长
- PullScrollView,PullListView, PullGridView 等进入自动下拉刷新
- Android网络编程之Http请求服务器数据(POST方式)
- 诸葛告诉你一个真实的产品经理是什么样的!
- 2012年5月SAT香港真题解析
- 多态工厂的实现--工厂方法模式
- iOS8使用TestFlight进行内部测试功能尝鲜
- hive 模拟update 操作
- QT 中调用ShellExecuteEx 运行CMD.exe 不能运行错误
- QT父窗口和子窗口互相通信