Recyclerview按字母顺序滚动条

时间:2019-07-04 15:15:31

标签: android android-layout android-recyclerview

我需要实现类似于Samsung Music应用的recyclerview字母滚动条(由于信誉低,我无法发布图片)

我已经阅读了所有与此相关的文章,但我不希望气泡滚动。我将所有字母都放在垂直的LinearLayout中,并且我想知道如何滚动到特定项目。

1 个答案:

答案 0 :(得分:0)

您可以使用此library。要获取更多信息,请查看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