Материал fasttscroll thumb с помощью GridView и ArrayAdapter
У меня есть GridView
макет, который использует ArrayAdapter
заполнить его содержимое. Я хочу использовать быструю прокрутку, и поэтому добавил следующее, относящееся к макету XML:
android:fastScrollAlwaysVisible="true"
android:fastScrollStyle="@android:style/Widget.Material.FastScroll"
Теперь я могу использовать быструю прокрутку для навигации, но теперь хотел бы добавить предварительный просмотр материала как таковой:
Насколько я понимаю, я должен был бы реализовать SectionIndexer
интерфейс из моего ArrayAdapter
как так:
class exampleArrayAdapter extends ArrayAdapter<...> implements SectionIndexer
К этому моменту я достиг шишки и не могу понять, как получить предварительный просмотр большого пальца, и боюсь, что я могу что-то делать не так. Были бы признательны за указатели относительно того, как я могу заставить это работать или что я должен искать.
1 ответ
Наконец-то у меня было время оглянуться назад, и решение оказалось очень тривиальным! Вот что я сделал:
@Override
public Object[] getSections() {
ArrayList<String> labels = new ArrayList<>();
for (LaunchableActivity activity: mActivityInfos) {
labels.add(activity.getActivityLabel());
}
return labels.toArray();
}
@Override
public int getPositionForSection(int i) {
return i;
}
@Override
public int getSectionForPosition(int i) {
// We do not need this
return 0;
}
У меня был список LaunchableActivity
и на основе этого создал массив разделов, которые будут возвращены. Для моих нужд все, что мне было нужно, это реализовать getPositionForSection
и не getSectionForPosition
, Ваш вариант использования может отличаться.
Исходный код, где я реализовал это, доступен здесь, в частности, по коммитам:
- a2c9ddd1c647919afbf24262ac1a7772a08e468c
- 08802e17f4c75835c28232353fed68964f5d7746
- 0d73a788c6b92d7b9c05a2871778da42af02afd8
- f13a59f02690481801bd07ffc593648b8e71d036