像Sony Xperia Contacts这样的右侧带字母的ListView是否有可能?

时间:2015-08-05 14:53:58

标签: android android-listview

我搜索了一天,找到了一个可以为我做这个的示例或库,请看下面的捕获:

如果您是Sony Xperia用户,您完全知道我要求的是什么,正如您在图片中看到的那样,用户可以触摸字母并将其向左移动。 进一步移动时,字母表会更大。

我在stackoverflow上看到了一些问题,但没有一个符合我的要求。 而我尝试的就像常规一样。

以下是关于StackOverFlow的问题:ListView with alphabe....我读过很多其他链接,我也可以提供。

1 个答案:

答案 0 :(得分:0)

为此,您需要ListView并支持自定义标头。

如果您不想弄脏手并寻找更简单的解决方案,请尝试使用此库SuperSLIM.

参见下面的例子,

enter image description here

您可以查看默认示例应用程序,该应用程序特别按字母顺序演示自定义标题的使用。

https://github.com/TonicArtos/SuperSLiM/tree/early_release_4/example

请参阅演示应用程序中的示例,按字母顺序实现标题,

public CountryNamesAdapter(Context context, int headerMode) {
        mContext = context;

        final String[] countryNames = context.getResources().getStringArray(R.array.country_names);
        mHeaderDisplay = headerMode;

        mItems = new ArrayList<>();

        //Insert headers into list of items.
        String lastHeader = "";
        int sectionManager = -1;
        int headerCount = 0;
        int sectionFirstPosition = 0;
        for (int i = 0; i < countryNames.length; i++) {
            String header = countryNames[i].substring(0, 1);
            if (!TextUtils.equals(lastHeader, header)) {
                // Insert new header view and update section data.
                sectionManager = (sectionManager + 1) % 2;
                sectionFirstPosition = i + headerCount;
                lastHeader = header;
                headerCount += 1;
                mItems.add(new LineItem(header, true, sectionManager, sectionFirstPosition));
            }
            mItems.add(new LineItem(countryNames[i], false, sectionManager, sectionFirstPosition));
        }
    }