【发布时间】:2014-04-01 13:46:11
【问题描述】:
我正在滚动列表视图。 我想加载列表视图滚动的数据,我这样做:
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
}
} else {
if ((totalItemCount - visibleItemCount) <= (firstVisibleItem + threshold)) {
new loadMoreListView().execute();
int currentPosition = lv.getFirstVisiblePosition();
View v = lv.getChildAt(0);
int distFromTop = (v == null) ? 0 : v.getTop();
lv.setSelectionFromTop(currentPosition, distFromTop);
}
}
}
loadMoreListView 是使用 AsynTask 加载数据的类。 我的问题是当我到达第 10 个位置时,listview 开始按预期加载数据,但它冻结了整个 listview。在加载数据之前,我无法与 listview 交互。是否有任何解决方案可以同时加载数据并与列表视图交互。 请不要推荐 Endless Adapter 或 Prime。我已经用那个试过了。 非常感谢任何帮助。 提前致谢。
【问题讨论】:
-
你在else块中设置
loading = true了吗? -
列表冻结多长时间? loadMoreListView 真的异步工作吗?
-
它冻结了大约 2-3 秒。
-
是的,我添加了 loading= true