Материал fasttscroll thumb с помощью GridView и ArrayAdapter

У меня есть GridView макет, который использует ArrayAdapter заполнить его содержимое. Я хочу использовать быструю прокрутку, и поэтому добавил следующее, относящееся к макету XML:

android:fastScrollAlwaysVisible="true"        
android:fastScrollStyle="@android:style/Widget.Material.FastScroll"

Теперь я могу использовать быструю прокрутку для навигации, но теперь хотел бы добавить предварительный просмотр материала как таковой:

предварительный просмотр fastscroll thumb

Насколько я понимаю, я должен был бы реализовать 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
Другие вопросы по тегам