Recyclerview Алфавитная полоса прокрутки - PullRequest
0 голосов
/ 04 июля 2019

Мне нужно реализовать алфавитную полосу прокрутки с видом на реселлер, аналогичную приложению Samsung Music (я не могу опубликовать изображение из-за низкой репутации)

Я прочитал все сообщения по этому поводу, но не хочупузырьковый свитокУ меня есть все алфавиты в вертикальной LinearLayout, и я хочу знать, как прокрутить до определенного элемента.

1 Ответ

0 голосов
/ 04 июля 2019

Вы можете использовать эту библиотеку . Для получения дополнительной информации оформите README

enter image description here

Шаг 1 : добавить зависимости

В build.gradle (Проект)

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

В приложении Gradle

dependencies {
    // AppCompat version
       implementation 'com.github.myinnos:AlphabetIndex-Fast-Scroll-RecyclerView:1.0.92'
    or
    // AndroidX version
       implementation 'com.github.myinnos:AlphabetIndex-Fast-Scroll-RecyclerView:1.0.94'
}

Шаг 2 : добавить макет

<in.myinnos.alphabetsindexfastscrollrecycler.IndexFastScrollRecyclerView
    android:id="@+id/fast_scroller_recycler"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Шаг 2 : внедрить SectionIndexer в RecyclerViewAdapter.

public class RecyclerViewAdapter extends RecyclerView.Adapter<ViewHolder> implements SectionIndexer {

private List<String> mDataArray;
private ArrayList<Integer> mSectionPositions;

.....

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

@Override
public Object[] getSections() {
    List<String> sections = new ArrayList<>(26);
    mSectionPositions = new ArrayList<>(26);
    for (int i = 0, size = mDataArray.size(); i < size; i++) {
        String section = String.valueOf(mDataArray.get(i).charAt(0)).toUpperCase();
        if (!sections.contains(section)) {
            sections.add(section);
            mSectionPositions.add(i);
        }
    }
    return sections.toArray(new String[0]);
}

@Override
public int getPositionForSection(int sectionIndex) {
    return mSectionPositions.get(sectionIndex);
}

}

Если вам сложно разобраться, взгляните на пример app

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...