pulltorefresh listlistview中有没有方法自动刷新

Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚
很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性。查了很多地方,发现这个开源
很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性。查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷新和上拉加载更多。这个组件有个mode的属性,可以设置为both,即上下同时都可拉动。但是只设置这个属性的话,,上拉与下拉产生的效果是完全一致的。所以要使用这个开源项目做到下拉刷新并同时可上拉加载更多,就需要在代码中进行一些处理。==========================pulltorefresh属性相关===================================== 开源项目:Android-PullToRefresh 项目地址:/chrisbanes/Android-PullToRefresh/wiki/Quick-Start-Guide1.属性:/chrisbanes/Android-PullToRefresh/blob/master/library/res/values/attrs.xml命名: xmlns:ptr="/apk/res-auto"ptr:ptrAnimationStyle动画效果 提供了两个值 flip和rotate 默认为rotate ptr:ptrRefreshableViewBackground设置刷新View的背景颜色ptr:ptrHeaderBackground设置头部View的背景颜色ptr:ptrHeaderTextColor设置头部View文字的颜色ptr:ptrHeaderSubTextColor设置头部view副标题文字的颜色ptr:ptrModepullFromStart:pullFromEnd:2.常用方法setOnRefreshListener(OnRefreshListener listener):设置刷新监听器;setOnLastItemVisibleListener(OnLastItemVisibleListener listener):设置是否到底部监听器;setOnPullEventListener(OnPullEventListener listener);设置事件监听器;onRefreshComplete():设置刷新完成==========================监听listview滚动方向===================================== 修改为上拉加载更多的关键在于onrefresh方法执行之前判断出listview的滚动方向。以下方法是所尝试的方法中效果最好的一种,并不能说完美解决,但应该是效果最接近的一种了。(当首屏数据行数未充满屏幕,或者滚动时第一行的滚动距离小于行高,可能还是会存在一点误差。不过大部分应用的列表每页数据一般都能充满屏幕,也可在此基础结合其他手势判断对此方法进行改善)。int mLastFirstVisibleItem = 0;
boolean mIsScrollingUp;
public void onScrollStateChanged(AbsListView view, int scrollState)
if (view.getId() == mListView.getId())
final int currentFirstVisibleItem = mListView.getFirstVisiblePosition();
if (currentFirstVisibleItem & mLastFirstVisibleItem)
else if (currentFirstVisibleItem & mLastFirstVisibleItem)
mLastFirstVisibleItem = currentFirstVisibleI
}参考资料:#==========================实现下拉刷新和上拉加载更多====================================解析json完毕后,判断是上拉操作还是下拉刷新操作:// 解析json
private void parseJson(String result)
List&ListJson& localList = parseJsonArray(Utils.parseListJson(result, "key"));
if(!mIsUp)
mDataList.clear();
mDataList.addAll(localList);
} 数据加载完毕后,notifyDataSetChanged和通知PullRefreshListView,同时页码加1:// 加载完毕处理
private void loadComplete()
mPullRefreshListView.onRefreshComplete();
mAdapter.notifyDataSetChanged();
mPage += 1;
} 判断上拉和下拉方向,监听刷新listview,修改头部和底部view的文字说明:/**
* *******************下拉刷新与上拉加载的监听处理************************
// 刷新listview监听
public void onRefresh(PullToRefreshBase&ListView& refreshView)
// 获取刷新时间,设置刷新时间格式
String str = DateUtils.formatDateTime(getActivity(), System.currentTimeMillis(), DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_NO_NOON);
// 判断下拉还是上拉
if (!mIsUp)
mPage = 0;
// 设置刷新文本说明(刷新过程中)
if (mIsUp)
mPullRefreshListView.getLoadingLayoutProxy().setRefreshingLabel("正在加载");
mPullRefreshListView.getLoadingLayoutProxy().setPullLabel("上拉加载更多");
mPullRefreshListView.getLoadingLayoutProxy().setReleaseLabel("释放开始加载");
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel("最后加载时间:" + str);
mPullRefreshListView.getLoadingLayoutProxy().setRefreshingLabel("正在刷新");
mPullRefreshListView.getLoadingLayoutProxy().setPullLabel("下拉刷新");
mPullRefreshListView.getLoadingLayoutProxy().setReleaseLabel("释放开始刷新");
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel("最后更新时间:" + str);
// 启动下载任务,加载数据
loadTask();
int mLastFirstVisibleItem = 0;
boolean mIsScrollingUp;
public void onScrollStateChanged(AbsListView view, int scrollState)
if (view.getId() == mListView.getId())
final int currentFirstVisibleItem = mListView.getFirstVisiblePosition();
if (currentFirstVisibleItem & mLastFirstVisibleItem)
else if (currentFirstVisibleItem & mLastFirstVisibleItem)
mLastFirstVisibleItem = currentFirstVisibleI
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
// 设置刷新文本说明(展开刷新栏前)
if (mIsUp)
mPullRefreshListView.getLoadingLayoutProxy().setRefreshingLabel("正在加载");
mPullRefreshListView.getLoadingLayoutProxy().setPullLabel("上拉加载更多");
mPullRefreshListView.getLoadingLayoutProxy().setReleaseLabel("释放开始加载");
mPullRefreshListView.getLoadingLayoutProxy().setRefreshingLabel("正在刷新");
mPullRefreshListView.getLoadingLayoutProxy().setPullLabel("下拉刷新");
mPullRefreshListView.getLoadingLayoutProxy().setReleaseLabel("释放开始刷新");
public void onLastItemVisible()
}本文出自 “天空没有痕迹但我飞过” 博客,转载请与作者联系!
你最喜欢的当前位置: & Android引用了开源PullT..
Android引用了开源PullToRefresh,怎样在加载后让ListView定位到刷新的位置?
问题补充:
由于我用的是PullToRefreshListView,结果发现像listView.getFirstVisiblePosition();listView.setSelection(position);这些方法已经不存在了,而scrolledX = listView.getScrollX();scrolledY = listView.getScrollY();得到的坐标也始终为(0,0),直接用scrollTo(int,int)滚动到某个位置也不起作用。请教各位大牛,有没有好的解决方法或建议。
由于我用的是PullToRefreshListView,结果发现像listView.getFirstVisiblePosition();listView.setSelection(position);这些方法已经不存在了,而scrolledX = listView.getScrollX();scrolledY = listView.getScrollY();得到的坐标也始终为(0,0),直接用scrollTo(int,int)滚动到某个位置也不起作用。请教各位大牛,有没有好的解决方法或建议。
您尚未登陆,请
之后再提交答案!
没有账号?
“送人玫瑰 手留余香”,您的建议可能影响他人一生。希望所有用户能够严肃对待回答,尽可能地为用户提供准确、全面、可信、有建设意义的高质量答案。
以下情况,用户回答一经发现,立即删除:
1、回答内容不能出现任何形式的广告、灌水行为,尤其是指向提供单位主站(页)的网址链接;
2、回答内容答非所问,与提问毫无关联或者关联性不大;
3、回答内容不能恶意中伤他人或其他单位的;
4、回答内容禁止复制粘贴大幅网络内容,提供无建设性意见的回答;
5、回答内容存在误导他人的事实性错误或过于偏激的主观臆断;
6、回答内容需符合法律法规及道德规范,不能含有脏话,恶意攻击,恐怖或者教唆犯罪,涉及歧视、误导等内容。
深圳市一览网络股份有限公司 版权所有 & 粤ICP备号 增值电信业务经营许可证:粤B2-listview控件刷新数据时闪烁。请问有没有方法?
[问题点数:80分,结帖人pp616]
listview控件刷新数据时闪烁。请问有没有方法?
[问题点数:80分,结帖人pp616]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
本帖子已过去太久远了,不再提供回复功能。[android]使用 PullToRefreshListView 来实现拉到刷新
我使用类来实现拉到刷新。和 layout.xml 如下所示:
&com.example.uidemo.PullToRefreshListView
android:id="@+id/listView1"
android:layout_width="400dp"
android:layout_height="match_parent" &
&/com.example.uidemo.PullToRefreshListView&
和活动如下所示:
PullToRefreshListView pdlv = new PullToRefreshListView(this);
pdlv.setOnRefreshListener(new OnRefreshListener() {
public void onRefresh() {
pdlv.onRefreshComplete();
pdlv.setAdapter(new ArrayAdapter&String&(this, android.R.layout.simple_expandable_list_item_1,getData()));
setContentView(pdlv);
现在的作品。但我设置宽度 400dp,为什么它总是显示 fill_parents。我怎么能把它修好?
解决方法 1:
您可以动态的高度和宽度上您自己的视图类
pullToRefreshListView.setLayoutParams(new LayoutParams(width, height));

我要回帖

更多关于 listview的用法 的文章

 

随机推荐