gpt4 book ai didi

android - SectionIndexer 如何影响 Android 快速滚动?

转载 作者:行者123 更新时间:2023-11-29 15:26:31 26 4
gpt4 key购买 nike

在实现 SectionIndexerArrayAdapter 中,有代码检查以相同首字母开头的列表项——因此可以合并。

像这样:

    alphaIndexer = new HashMap<String, Integer>();
int size = objects.length;

for (int i = 0; i < size; i++) {

// Log.d("ObjectLength", String.valueOf(objects.length));

ItemObject it = objects[i];
String name = it.name;
String s = name.substring(0, 1);
s = s.toUpperCase();

if (!alphaIndexer.containsKey(s)) {
alphaIndexer.put(s, i);
}
}

Set<String> sectionLetters = alphaIndexer.keySet();
ArrayList<String> sectionList = new ArrayList<String>(sectionLetters);
Collections.sort(sectionList);
sections = new String[sectionList.size()];

// sectionList.toArray(sections);

for (int i = 0; i < sectionList.size(); i++)
sections[i] = sectionList.get(i);

我的问题是,以这种方式整合会影响 FastScrolling 吗?有时在使用 SectionIndexer 的 ListView 上,Fast Scroll 并不总是平滑的,而是“断断续续”的。我可以从情境中移除 SectionIndexer,Fast Scroll 突然顺畅地按比例滚动。

添加代码:

public int getPositionForSection(int section) {
return alphaIndexer.get(sections[section]);
}

public int getSectionForPosition(int position) {
return 0;
}

public Object[] getSections() {
return sections;
}

最佳答案

SectionIndexer 确实会影响快速滚动。

当使用 SectionIndexer 时,您是说您希望用户能够精确地跳转到数据集的那些部分。如果这些部分中的数据分布不均匀,则快速滚动条将与其通过部分部分的进度成比例移动,而不是与其通过数据集中每个单独项目的进度成比例移动。

这是故意的;这样做是为了在用户拖动快速滚动拇指时,每个部分都具有相同的权重。精确定位任何部分与定位任何其他部分一样容易,即使一个部分只有一个项目,而它两侧的部分有数百个。

关于android - SectionIndexer 如何影响 Android 快速滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12132381/

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