我正在使用chrisbanes的pulltorefresh listview,我发现它here。
我成功地实现了它,感谢它的记录。:)
然而,我现在陷入了这一点。我使用截击从服务器获取数据。它工作得很好,直到我添加了一个检查,看看是否没有更多的数据,然后简单地祝酒用户。
我确实喜欢下面,
@Override
public void onRefresh(
PullToRefreshBase<ListView> refreshView) {
if (hasMoreData()){
//Call service when pulled to refresh
orderService();
} else{
// Call onRefreshComplete when the list has been refreshed.
toastShort("No more data to load");
orderListAdapter.notifyDataSetChanged();
mPullRefreshListView.onRefreshComplete();
}
}
祝酒词上来了,但我也继续看到装载…我的列表视图下面的消息。我想应该由
onRefreshComplete();
来处理,但没有。我该怎么做?请帮忙。
最佳答案
在撞了我的头将近3个小时后,我终于解决了这个问题。很简单很难。
我所做的是创建一个处理程序和一个runnable,它调用mPullRefreshListView.onRefreshComplete();
并在一段时间后检查是否mPullRefreshListView
仍在刷新,然后再次调用方法,在下次调用时关闭它。:)
代码是这样的..
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
if (hasMoreData()) {
// Call service when pulled to refresh
toastShort("Last");
orderService();
} else {
// Call onRefreshComplete when the list has been
// refreshed.
toastShort("No more data to load");
upDatePull(); //this method does the trick
}
}
private void upDatePull() {
// lvOrders.setAdapter(null);
handler = new Handler();
handler.postDelayed(runnable, 1000);
}
Runnable runnable = new Runnable() {
@Override
public void run() {
mPullRefreshListView.onRefreshComplete();
if (mPullRefreshListView.isRefreshing()) {
Logger.d("xxx", "trying to hide refresh");
handler.postDelayed(this, 1000);
}
}
};
学分this link.