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

Seb*_*ado 11 sorting string android android-recyclerview

我有一个带有2个参数的CardViews的recyclerView(两个都是字符串),其中一个是标题,我想有一个按钮按照字母顺序对它们进行排序.

因为它没有太多元素我决定使用插入排序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]);


        }

            } 
Run Code Online (Sandbox Code Playgroud)

它需要一系列字符串并命令它们.

这是我的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"));

    }
Run Code Online (Sandbox Code Playgroud)

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

我们的想法是将排序方法放在显示RecyclerView的同一个Activity中的按钮中,当按下它时,它必须对它们进行排序而不转到另一个Activity.

我有点迷失在这里.

在简历中,我要做的是有一个按钮,按照"标题"参数的字母顺序排列RecyclerView的元素(在本例中为CardViews).

我的想法是对的,你有另一种方法可以做到这一点,或者我该怎么做才能做到这一点?

太感谢了.

xia*_*omi 24

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

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

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

修改后不要忘记通知列表数据已经改变notifyDataSetChanged()(来自你的RecyclerView.Adapter).