如何制作按字母顺序滚动的列表?

How can I make a list with alphabetical scrolling?

如何使用 recyclerview 制作最简单的列表并添加字母滚动(如联系人)?请向我描述一下,或者给我一个如何做的例子。

P.S:我是 Android 开发新手,之前从未使用过 RecyclerView。

打开res/layout中的activity_main.xml文件,复制以下内容。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingLeft="5dp"
tools:context=".MainActivity"
android:baselineAligned="false" >

<ListView
    android:id="@+id/list_fruits"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:paddingRight="5dp" >
</ListView>

<LinearLayout
    android:id="@+id/side_index"
    android:layout_width="50dp"
    android:layout_height="fill_parent"
    android:background="#c3c3c3"
    android:gravity="center_horizontal"
    android:orientation="vertical" >
</LinearLayout>

在res/layout新建一个side_index_item.xml文件,复制以下内容。

    <?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/side_list_item"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:padding="3dp"
    android:textSize="14sp" />

Open res/values/strings.xml and edit to have the content as shown below. A string array is defined to have list of fruits.

    <?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">AndroidListViewIndex</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>

    <string-array name="fruits_array">
        <item>Apples</item>
        <item>Apricots</item>
        <item>Avocado</item>
        <item>Annona</item>
        <item>Banana</item>
        <item>Blueberry</item>
        <item>Blackberry</item>
        <item>Blackapple</item>
        <item>Custard Apple</item>
        <item>Clementine</item>
        <item>Cantalope</item>
        <item>Date</item>
        <item>Elderberry</item>
        <item>Fig</item>
        <item>Grapefruit</item>
        <item>Grape</item>
        <item>Gooseberry</item>
        <item>Guava</item>
        <item>Honeydew melon</item>
        <item>Jackfruit</item>
        <item>Juniper Berry</item>
        <item>Kiwi</item>
        <item>Kumquat</item>
        <item>Lemons</item>
        <item>Limes</item>
        <item>Lychee</item>
        <item>Mango</item>
        <item>Mandarin</item>
        <item>Nectaraine</item>
        <item>Orange</item>
        <item>Olive</item>
        <item>Prunes</item>
        <item>Pears</item>
        <item>Plum</item>
        <item>Pineapple</item>
        <item>Peach</item>
        <item>Papaya</item>
        <item>Pomelo</item>
        <item>Raspberries</item>
        <item>Rambutan</item>
        <item>Strawberries</item>
        <item>Sweety</item>
        <item>Salmonberry</item>
        <item>Tangerines</item>
        <item>Tomato</item>
        <item>Ugli</item>
        <item>Watermelon</item>
        <item>Woodapple</item>
    </string-array>

</resources>

这是主要的activityclass.

private void getIndexList(String[] fruits) {
        mapIndex = new LinkedHashMap<String, Integer>();
        for (int i = 0; i < fruits.length; i++) {
            String fruit = fruits[i];
            String index = fruit.substring(0, 1);

            if (mapIndex.get(index) == null)
                mapIndex.put(index, i);
        }
    }
  • displayIndex() 在右侧显示字母索引器并设置 TextView 的 OnClickListener。

  • 当从字母索引器中选择一个字母时,它会显示 相应的列表项。

为了更深入的理解,我会建议做 google 一段时间,你会得到很多教程。这是我可以推荐的:http://www.brightec.co.uk/ideas/android-listview-alphabet-scroller