在android程序中,使ListView异步加载数据的时候,如果使它每一次加载完显示了,再去触发加载新的数据。 20

/***异步加载*/mallListView.setOnScrollListener(newAbsListView.OnScrollListener(){//判断是否到了... /**
* 异步加载
*/
mallListView.setOnScrollListener(new AbsListView.OnScrollListener() {

// 判断是否到了最后一行
boolean isLastRow = false;

/**
* //滚动时一直回调,直到停止滚动时才停止回调。单击时回调一次。
* //firstVisibleItem:当前能看见的第一个列表项ID(从0开始)
* //visibleItemCount:当前能看见的列表项个数(小半个也算) //totalItemCount:列表项共数
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// 判断是否滚到最后一行
if (firstVisibleItem + visibleItemCount == totalItemCount
&& totalItemCount > 0) {
isLastRow = true;

System.out.println("我已经到最后一行拉··");
}
}

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// 正在滚动时回调,回调2-3次,手指没抛则回调2次。scrollState = 2的这次不回调
// 回调顺序如下
// 第1次:scrollState = SCROLL_STATE_TOUCH_SCROLL(1) 正在滚动
// 第2次:scrollState = SCROLL_STATE_FLING(2)
// 手指做了抛的动作(手指离开屏幕前,用力滑了一下)
// 第3次:scrollState = SCROLL_STATE_IDLE(0) 停止滚动
// 当滚到最后一行且停止滚动时,执行加载

if (isLastRow
&& scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
System.out.println("加载新数据了。。O(∩_∩)O~");

//执行语句

isLastRow = false;
}
}
});

我在想应该是if里面的判断语句不科学!求解呀。
展开
 我来答
趣秀屿621
2011-12-09 · TA获得超过6.9万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2088万
展开全部
通看了下应该没什么问题 你的情况是不去执行 //执行语句 吗? 我写过一个和你类似的在
onScrollStateChanged还多一层view.getLastVisiblePosition() == view.getCount() - 1的判断 运行起来也没问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式