SectionIndexer 的最后一部分滚动得非常快
Last section of SectionIndexer scrolls really fast
这是我的问题 short video。列表的最后一部分滚动得非常快,正如您可以通过滚动条看到的那样。这是我的代码(相关部分):
public TotemAdapter (Activity activity, List<Totem> list) {
_activity = activity;
totemList = list;
showDelete = false;
var items = list.ToArray ();
alphaIndex = new Dictionary<string, int>();
for (int i = 0; i < items.Length; i++) {
var key = items[i].title[0].ToString();
if (!alphaIndex.ContainsKey(key))
alphaIndex.Add(key, i);
}
sections = new string[alphaIndex.Keys.Count];
alphaIndex.Keys.CopyTo(sections, 0);
sectionsObjects = new Java.Lang.Object[sections.Length];
for (int i = 0; i < sections.Length; i++) {
sectionsObjects[i] = new Java.Lang.String(sections[i]);
}
}
public int GetPositionForSection (int section) {
return alphaIndex[sections[section]];
}
public int GetSectionForPosition(int position) {
return 1;
}
public Java.Lang.Object[] GetSections () {
return sectionsObjects;
}
有谁知道我该如何解决这个问题?
提前致谢。
您可以使用SetFriction method to control listview fast scroll speed. See an example at Android Listview slow down scroll speed
我通过在 GetSectionForPosition
中返回 0 而不是 1 来修复它。
在 getSectionForPosition
中返回常量可能会导致在列表中滑动时滚动条定位的错误行为。尽管您的问题似乎 已解决,但实际上并没有。 getSectionForPosition
方法的文档说:
Given a position within the adapter, returns the index of the corresponding section within the array of section objects.
因此,当您轻扫 列表时,您当前正在查看的部分最终会发生变化(例如,您将到达联系人中的 'B' 部分) .当您在列表中滑动时,此方法告诉滚动条必须将其定位在何处(这是 getPositionForSection
方法的对应方法,当您 scroll[=26= 时跳转到列表中的部分] 使用滚动条浏览列表)。
我提供了 getSectionForPosition
方法的示例实现 。
这是我的问题 short video。列表的最后一部分滚动得非常快,正如您可以通过滚动条看到的那样。这是我的代码(相关部分):
public TotemAdapter (Activity activity, List<Totem> list) {
_activity = activity;
totemList = list;
showDelete = false;
var items = list.ToArray ();
alphaIndex = new Dictionary<string, int>();
for (int i = 0; i < items.Length; i++) {
var key = items[i].title[0].ToString();
if (!alphaIndex.ContainsKey(key))
alphaIndex.Add(key, i);
}
sections = new string[alphaIndex.Keys.Count];
alphaIndex.Keys.CopyTo(sections, 0);
sectionsObjects = new Java.Lang.Object[sections.Length];
for (int i = 0; i < sections.Length; i++) {
sectionsObjects[i] = new Java.Lang.String(sections[i]);
}
}
public int GetPositionForSection (int section) {
return alphaIndex[sections[section]];
}
public int GetSectionForPosition(int position) {
return 1;
}
public Java.Lang.Object[] GetSections () {
return sectionsObjects;
}
有谁知道我该如何解决这个问题?
提前致谢。
您可以使用SetFriction method to control listview fast scroll speed. See an example at Android Listview slow down scroll speed
我通过在 GetSectionForPosition
中返回 0 而不是 1 来修复它。
在 getSectionForPosition
中返回常量可能会导致在列表中滑动时滚动条定位的错误行为。尽管您的问题似乎 已解决,但实际上并没有。 getSectionForPosition
方法的文档说:
Given a position within the adapter, returns the index of the corresponding section within the array of section objects.
因此,当您轻扫 列表时,您当前正在查看的部分最终会发生变化(例如,您将到达联系人中的 'B' 部分) .当您在列表中滑动时,此方法告诉滚动条必须将其定位在何处(这是 getPositionForSection
方法的对应方法,当您 scroll[=26= 时跳转到列表中的部分] 使用滚动条浏览列表)。
我提供了 getSectionForPosition
方法的示例实现