android - 如何在 Android RecyclerView 上对字符串进行排序?

标签 android string sorting android-recyclerview

我有一个充满 CardView 的 recyclerView,它有 2 个参数(它们都是字符串),其中一个是标题,我想要一个按钮来根据标题按字母顺序对它们进行排序。

因为它没有太多元素,所以我决定使用插入排序,即 o(n^2),这是我的实现:

public void ISortDes(String[]strings){
     int j;                  
     String key;                
     int i; 

     for (j = 1; j < strings.length; j++)    
    {
           key = strings[ j ];


             for(i = j - 1; (i >= 0) ; i--)   

          {
                if (key.compareTo(strings[i]) > 0){
                  break;
                }
                 strings[ i+1 ] = strings[ i ];
          }
         strings[ i+1 ] = key;    
     }

        for (int k = 0; k < strings.length; k++){

            System.out.println(strings[k]);


        }

            } 

它接受一个字符串数组并对它们进行排序。

这是我的 RecyclerView 接受参数的方法:

private void initializeData() {
        categories = new ArrayList<>();

          categories.add(new Categories("CARS", "CARS"));
            categories.add(new Categories("SPORTS", "SPORTS"));
            categories.add(new Categories("GAMING", "GAMING"));
            categories.add(new Categories("GAMBLING", "GAMBLING"));
            categories.add(new Categories("TECH", "TECH"));
            categories.add(new Categories("NATURE", "NATURE"));
            categories.add(new Categories("RANDOM", "RANDOM"));
            categories.add(new Categories("COUSINE", "COUSINE"));
            categories.add(new Categories("HISTORY", "HISTORY"));
            categories.add(new Categories("MUSIC", "MUSIC"));
            categories.add(new Categories("STUDIES", "STUDIES"));

    }

我认为我需要以某种方式将第一个参数传递给字符串数组,然后对其进行排序。

想法是在显示 RecyclerView 的同一个 Activity 中的按钮中使用排序方法,当按下它时,它必须对它们进行排序,而无需转到另一个 Activity。

我有点迷路了。

在简历中我想要做的是有一个按钮,它根据“标题”参数按字母顺序排列 RecyclerView 的元素(在本例中是 CardView)。

我的想法对吗,你有没有其他方法可以做到这一点,或者我应该怎么做才能做到这一点?

感谢一百万。

最佳答案

对列表进行排序的最简单方法是使用 java.util.Collections

Collections.sort(categories, new Comparator<Categories>() {
            @Override
            public int compare(Categories lhs, Categories rhs) {
                return lhs.title.compareTo(rhs.title);
            }
        });

这将逐字符比较标题。并将您的列表从 a 到 z 排序。

修改后不要忘记使用 notifyDataSetChanged()(来自您的 RecyclerView.Adapter)通知列表数据已更改。

关于android - 如何在 Android RecyclerView 上对字符串进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419136/

相关文章:

android - 显示以设置在 SwitchCompat 处于关闭状态时可见的文本?

android - 错误 : Could not get unknown property 'iosX64' for KotlinTargetPreset in Android Studio 3. 1.4?

Java,处理文件

java - 什么是\xHEX 字符?是否有它们的表格?

java - 按值对 HashMap 进行排序

c++ - 选择排序程序显示异常结果

android - 流程和服务的区别?

android - Android 中的闪烁屏幕或闪烁屏幕

javascript - 查找子字符串并插入另一个字符串

python - 保持对象按多个键排序的高效数据结构