ArrayAdapter
実装の中SectionIndexer
には、同じ最初の文字で始まるリスト項目をチェックするコードがあります。これにより、統合することができます。
このような:
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に影響しますか?を使用するListViewSectionIndexer
では、高速スクロールが常にスムーズであるとは限りませんが、「途切れ途切れ」になることがあります。私は状況から取り除くことができSectionIndexer
、高速スクロールは突然スムーズかつ比例してスクロールします。
追加されたコード:
public int getPositionForSection(int section) {
return alphaIndexer.get(sections[section]);
}
public int getSectionForPosition(int position) {
return 0;
}
public Object[] getSections() {
return sections;
}