当实现SectionIndexer时,FastScrollBar滚动条超出屏幕

4
我正在使用实现SectionIndexer的自定义适配器创建ListView。当我只在Manifest文件中输入minSdkVersion = 8时,一切都正常。但是,如果我添加targetSdkVersion = 11(或更高版本),当我滚动列表时,快速滚动条开始从屏幕上滚出,但列表没有到达末尾。
还有一个问题:如果我将targetSdkVersion = 11添加到清单中,并且不实现SectionIndexer的列表适配器,滚动条也能正常工作。
但是我需要targetSdkVersion = 11或更高版本,并且需要实现SectionIndexer。
有什么想法吗?
1个回答

15

我的猜测是你没有正确实现getSectionForPosition(int position)方法。

以下是我的做法:

    @Override
    public int getSectionForPosition(int position) {
        for(int i = sections.length - 1; i >= 0; i--) {
            if(position > alphaIndexer.get(sections[i]))
                return i;
        }
        return 0;
    }

我差点放弃了希望。谢谢! - Sebastiano
哇,我花了很长时间才找到这个答案! - Wesley
2
它能工作,但每次调用都需要O(n)的操作,如果用户滚动屏幕,这将被频繁执行。将值放入映射中以获得更好的效率。 - Itai Hanski
Itai Hanski,你能否给个例子吗?我试了一下但是失败了:( 这个循环很卡。 - Ahmet K
位置大于等于alphaIndexer的部分更加平滑。 - Björn Hallström

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接