gpt4 book ai didi

Android:onScrollStateChanged SCROLL_STATE_IDLE 有时不会触发

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:25 27 4
gpt4 key购买 nike

我遇到了一点问题。我在做什么:我有一个 ListView,里面有一些图像。为了使滚动更顺畅,我禁用了滚动时显示的图像。现在好像有一个bug在 Android 中,这有时会导致滚动状态不会从 SCROLL_STATE_FLING 变回 SCROLL_STATE_IDLE,这会导致我的图像不再显示。

我的第一个想法是设置一个 onTouchListener 并检查我何时获得 ACTION_UP,但这没有帮助,因为 SCROLL_STATE_FLING 状态显然是在那之后设置的。所以现在我想我可以在设置 SCROLL_STATE_FLING 状态时启动一个计时器,并在一段时间后检查状态是否仍处于快速模式,然后使我的 View 无效。但我认为这不是一个很好的解决方案。

有没有人对我如何做到这一点有更好的想法?我看过this回复,但我需要一个 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) {
}
});

谢谢,玛丽亚

最佳答案

我有同样的问题,所以我的解决方案是只检测 ScrollView 位置是否到达最后一页,在这种情况下,无论滚动状态如何,总是加载图像(因为问题似乎总是在用户快速移动时发生到 ListView 的末尾)。所以修改你的代码你会:

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) {
}
});

关于Android:onScrollStateChanged SCROLL_STATE_IDLE 有时不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8140623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com