使用Android-PullToRefresh的PullToRefreshScrollView自动刷新问题

昵__称 2015-04-08 11:04:19
使用Android-PullToRefresh的PullToRefreshScrollView,想在第一次进入的时候显示正在加载设置了setRefreshing(true);但是他没有加载数据,之前看PullToRefreshListView是有判断Adapter,但是PullToRefreshScrollView就没看懂了。
...全文
14695 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloudpoet 2016-11-28
  • 打赏
  • 举报
回复
20L & 27L 正解,还有不懂可问
  • 打赏
  • 举报
回复
有时候刚调用了更新界面的方法,不能马上得到某些控制的实际宽高之类,一些特殊效果就做不出来,或者效果跟预期不一样,用上面的方法我屡试不爽。
  • 打赏
  • 举报
回复
handler.post方法有一个替代方法,就是所有布局加载测量布局完成会自动回调的方法。用来做自动开始动画,立即获取控件宽高,重新计算控件大小再布局一次等,都很好用。 textView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { textView.getViewTreeObserver().removeGlobalOnLayoutListener(this); //TODO 回调 } });
a491392040 2016-04-26
  • 打赏
  • 举报
回复
在getContentSize()中判断下,如果高度为0就测量一次
Volk 2016-04-22
  • 打赏
  • 举报
回复
mRefreshLayout.autoRefresh();
huyang119 2016-04-21
  • 打赏
  • 举报
回复
pull_lv.setRefreshing(true);
luoshishou 2015-12-16
  • 打赏
  • 举报
回复
mPullToRefreshScrollView.setRefreshing(); 改成mPullToRefreshScrollView.setRefreshing(false);
柒加伊 2015-12-16
  • 打赏
  • 举报
回复
这个你去看PullToRefresh的官方文档, 里面肯定有手动刷新的调用方法. 不会这么纠结吧.
parcool 2015-10-15
  • 打赏
  • 举报
回复
我有一个不优雅的解决办法。但总的来说还是比5L的方法可靠,他那种的问题是:如果设定的延迟时间到后由于手机太慢还未初始化成功那也不行,如果设定延迟时间太长又影响体验。 直接看办法: 1、在PullToRefreshBase.java里加入一个方法:
	public boolean canAutoFresh() {
		if (mHeaderLayout.getHeight() > 0) {
			return true;
		}
		return false;
	}
2、在你进入列表页面的时候启动一个线程,while循环里不断调用这个方法canAutoFresh(),线程休眠时间为100,如果返回true跳出循环,这时设置setRefreshing(true)就好了
feiyu578028827 2015-10-07
  • 打赏
  • 举报
回复
mPullRefreshScrollView.mHeaderLayout.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { @Override public boolean onPreDraw() { // TODO Auto-generated method stub int width = mPullRefreshScrollView.mHeaderLayout.getHeight(); if (width>0) { mPullRefreshScrollView.setRefreshing(); new GetDataTask().execute(); mPullRefreshScrollView.mHeaderLayout.getViewTreeObserver().removeOnPreDrawListener(this); } return true; } }); 试试这个可行不?
昵__称 2015-08-15
  • 打赏
  • 举报
回复
引用 16 楼 u012062810 的回复:
楼主, 你现在解决了嘛 ? 用 new Handler().postDelayed(.......); 是能做到启动刷新, 但是我现在想做: 我发个说说,发成功后,内容界面就是自动 刷新不了。非要手动刷新。
发说说后刷新只要调用 控件的setRefreshing方法不就够了么?
遇到问题 2015-08-14
  • 打赏
  • 举报
回复
卧槽 、、刚刚精光一闪 。 觉得就用此方法吧。 在 listView 做一个if (){} else if(){} 。再把new Handler().postDelayed(.......)+viewData(); 就行了 . 诶。。洗澡去了 ~ 
遇到问题 2015-08-14
  • 打赏
  • 举报
回复
楼主, 你现在解决了嘛 ? 用 new Handler().postDelayed(.......); 是能做到启动刷新, 但是我现在想做: 我发个说说,发成功后,内容界面就是自动 刷新不了。非要手动刷新。
昵__称 2015-08-06
  • 打赏
  • 举报
回复
引用 14 楼 suligen 的回复:
怎么解决 急需
我自己做了延迟刷新。
suligen 2015-08-06
  • 打赏
  • 举报
回复
怎么解决 急需
fcqm8888 2015-07-29
  • 打赏
  • 举报
回复
希望有网友跟帖,为问题解决贡献力量。
outdoorsmanm 2015-06-26
  • 打赏
  • 举报
回复
11楼你现在解决了吗?我实现了自动刷新,可是有时候也会出现刷新很慢,或者不刷新。
flyaing 2015-05-04
  • 打赏
  • 举报
回复
这个是因为它的headerView还没有被初始化,获取高度时是0,所以看不到任何效果。延时100还是3000这个看手机的,有些手机加载快,有些慢。我暂时用的解决方案也是postDelay,感觉非常不靠谱,在看源码尝试中..
yijiannaiyi 2015-04-09
  • 打赏
  • 举报
回复
从这儿看到的
昵__称 2015-04-09
  • 打赏
  • 举报
回复
引用 5 楼 yijiannaiyi 的回复:
楼主这样就有效过了,真扯淡
new Handler().postDelayed(new Runnable() {

@Override
public void run() {
mPullToRefreshScrollView.setRefreshing();
}
}, 3000);

你哪找来的,什么原理啊。
加载更多回复(8)

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧