在自定义适配器列表视图中突出显示搜索到的文本

西伯坦

我有一个listview,想从中搜索文本。我已经成功完成了,但是现在我想搜索该项目并在列表视图中突出显示搜索到的文本。这是我在ListViewAdapter中的过滤器功能:

public void filter(String charText) {

    charText = charText.toLowerCase(Locale.getDefault());
    worldpopulationlist.clear();
    if (charText.length() == 0) {
        worldpopulationlist.addAll(arraylist);
    } 
    else 
    {
        for (WorldPopulation wp : arraylist) 
        {
            // Find charText in wp
            int startPos = wp.getCountry().toLowerCase(
                    Locale.getDefault()).indexOf(charText.toLowerCase(Locale.getDefault()));
            int endPos = startPos + charText.length();
            if (startPos != -1) 
            {
                   Spannable spannable = new SpannableString(wp.getCountry());
                    ColorStateList blueColor = new ColorStateList(new int[][] { new int[] {}}, new int[] { Color.BLUE });
                    TextAppearanceSpan highlightSpan = new TextAppearanceSpan(null, Typeface.BOLD, -1, blueColor, null);

                    spannable.setSpan(highlightSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                   //    countryTextView.setText(spannable);
                    worldpopulationlist.add(wp);

            }

        }
    }
    notifyDataSetChanged();

}

我已经谷歌搜索了,我知道Spannable用于此目的,但是它不起作用。请帮助我,告诉我是否需要其他相关代码。

编辑:

我遵循的教程是从这里开始的我使用相同的代码进行了一些小的更改。我只想在列表视图中突出显示搜索到的文本(在这种情况下,仅是一项,例如国家/地区)。

Juanjo Vega占位符图像

好吧,我下载了示例项目,最后附带了以下内容。使代码适应您的需求。

在您的过滤器方法中,存储用于执行过滤器的字符串:

// Filter Class
public void filter(String searchString) {
    this.searchString = searchString;
    ...
    // Filtering stuff as normal.
}

您必须声明一个成员字符串来存储它:

public class ListViewAdapter extends BaseAdapter {
    ...    
    String searchString = "";
    ...

并且,在getView您突出显示搜索词:

public View getView(final int position, View view, ViewGroup parent) {
    ...
    // Set the results into TextViews
    WorldPopulation item = worldpopulationlist.get(position);
    holder.rank.setText(item.getRank());
    holder.country.setText(item.getCountry());
    holder.population.setText(item.getPopulation());

    // Find charText in wp
    String country = item.getCountry().toLowerCase(Locale.getDefault());
    if (country.contains(searchString)) {
        Log.e("test", country + " contains: " + searchString);
        int startPos = country.indexOf(searchString);
        int endPos = startPos + searchString.length();

        Spannable spanText = Spannable.Factory.getInstance().newSpannable(holder.country.getText()); // <- EDITED: Use the original string, as `country` has been converted to lowercase.
        spanText.setSpan(new ForegroundColorSpan(Color.RED), startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        holder.country.setText(spanText, TextView.BufferType.SPANNABLE);
    }
    ...
}

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在自定义适配器列表视图中突出显示搜索到的文本

来自分类Dev

自定义适配器不在列表视图中显示文本

来自分类Dev

使用自定义适配器在列表视图中选择/突出显示多个项目-Android

来自分类Dev

自定义适配器不显示列表视图

来自分类Dev

如何获取JSON数据并存储在数据库中,然后显示到自定义适配器列表视图中?

来自分类Dev

列表视图中的页脚按钮,如何从自定义列表适配器获取价值

来自分类Dev

自定义适配器不会使列表视图中的行膨胀

来自分类Dev

自定义文本视图适配器不适用于列表视图

来自分类Dev

将列表视图的数据从Asynctask传递到自定义列表适配器类

来自分类Dev

自定义列表视图和适配器覆盖getView,更改文本颜色

来自分类Dev

自定义数组适配器到列表视图错误

来自分类Dev

自定义旋转适配器显示空列表

来自分类Dev

我必须使用扩展基本适配器的自定义适配器在列表视图中显示所有联系人的联系人信息(名称,号码,图像)

来自分类Dev

Android:需要在自定义适配器列表视图中保存复选框状态

来自分类Dev

Android:需要在自定义适配器列表视图中保存复选框状态

来自分类Dev

在片段中每个列表视图有多个文本视图的情况下,如何设置自定义适配器

来自分类Dev

如何使用Hashmap为自定义列表视图创建自定义适配器

来自分类Dev

在操作栏中搜索无法与列表视图的自定义适配器一起正常使用

来自分类Dev

Android - 将搜索栏添加到自定义列表视图和简单适配器

来自分类Dev

在自定义ListView适配器中按项目时突出显示效果

来自分类Dev

使用自定义适配器的Listview搜索无法正确显示搜索结果

来自分类Dev

使用自定义适配器和视图持有器的Android列表视图

来自分类Dev

使用自定义适配器视图时,如何使列表视图可点击?

来自分类Dev

在自定义列表视图适配器中使用多个视图

来自分类Dev

使用自定义适配器从listview搜索项目

来自分类Dev

Android:具有图像和文本错误的自定义网格视图适配器

来自分类Dev

Android:具有图像和文本错误的自定义网格视图适配器

来自分类Dev

自定义视图的适配器中的NullPointerException

来自分类Dev

自定义适配器视图(带有图片)

Related 相关文章

  1. 1

    在自定义适配器列表视图中突出显示搜索到的文本

  2. 2

    自定义适配器不在列表视图中显示文本

  3. 3

    使用自定义适配器在列表视图中选择/突出显示多个项目-Android

  4. 4

    自定义适配器不显示列表视图

  5. 5

    如何获取JSON数据并存储在数据库中,然后显示到自定义适配器列表视图中?

  6. 6

    列表视图中的页脚按钮,如何从自定义列表适配器获取价值

  7. 7

    自定义适配器不会使列表视图中的行膨胀

  8. 8

    自定义文本视图适配器不适用于列表视图

  9. 9

    将列表视图的数据从Asynctask传递到自定义列表适配器类

  10. 10

    自定义列表视图和适配器覆盖getView,更改文本颜色

  11. 11

    自定义数组适配器到列表视图错误

  12. 12

    自定义旋转适配器显示空列表

  13. 13

    我必须使用扩展基本适配器的自定义适配器在列表视图中显示所有联系人的联系人信息(名称,号码,图像)

  14. 14

    Android:需要在自定义适配器列表视图中保存复选框状态

  15. 15

    Android:需要在自定义适配器列表视图中保存复选框状态

  16. 16

    在片段中每个列表视图有多个文本视图的情况下,如何设置自定义适配器

  17. 17

    如何使用Hashmap为自定义列表视图创建自定义适配器

  18. 18

    在操作栏中搜索无法与列表视图的自定义适配器一起正常使用

  19. 19

    Android - 将搜索栏添加到自定义列表视图和简单适配器

  20. 20

    在自定义ListView适配器中按项目时突出显示效果

  21. 21

    使用自定义适配器的Listview搜索无法正确显示搜索结果

  22. 22

    使用自定义适配器和视图持有器的Android列表视图

  23. 23

    使用自定义适配器视图时,如何使列表视图可点击?

  24. 24

    在自定义列表视图适配器中使用多个视图

  25. 25

    使用自定义适配器从listview搜索项目

  26. 26

    Android:具有图像和文本错误的自定义网格视图适配器

  27. 27

    Android:具有图像和文本错误的自定义网格视图适配器

  28. 28

    自定义视图的适配器中的NullPointerException

  29. 29

    自定义适配器视图(带有图片)

热门标签

归档