Mar*_*yer 10 android listview scroll
我遇到了一些问题.我在做什么:我有一个ListView,里面有一些图像.为了使滚动更顺畅,我已禁用滚动时显示的图像.现在Android中似乎存在一个错误,有时会导致滚动状态不会从SCROLL_STATE_FLING变回SCROLL_STATE_IDLE,这会导致我的图像不再显示.
我的第一个想法是设置一个onTouchListener并检查何时获得ACTION_UP,但这没有用,因为之后显然设置了SCROLL_STATE_FLING状态.所以现在我认为我可以在设置SCROLL_STATE_FLING状态时启动计时器,并在一段时间后检查状态是否仍处于fling模式然后使我的视图无效.但我不认为这是一个非常好的解决方案.
有没有人对如何做到这一点有更好的想法?我已经看到了这个回复,但我需要一个API级别<9的解决方案(加上它有时也会发生,当它没有过度滚动时)
这是我的代码:
mList.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
mListAdapter.setIsScrolling(scrollState != SCROLL_STATE_IDLE);
Log.i(this, "scrollStateChanged" + scrollState);
if (scrollState == SCROLL_STATE_IDLE) {
mList.invalidateViews();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢,玛丽亚
小智 17
我有同样的问题,所以我的解决方案只是检测滚动视图位置是否已到达最后一页,在这种情况下总是加载图像而不管滚动状态(因为问题似乎总是发生在用户徘徊到最后列表视图).所以修改你的代码你会有:
mList.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
mListAdapter.setIsScrolling(scrollState != SCROLL_STATE_IDLE);
Log.i(this, "scrollStateChanged" + scrollState);
int first = view.getFirstVisiblePosition();
int count = view.getChildCount();
if (scrollState == SCROLL_STATE_IDLE || (first + count > mListAdapter.getCount()) ) {
mList.invalidateViews();
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29166 次 |
最近记录: |