Как отсортировать строки в Android RecyclerView?

У меня есть recyclerView, полный CardViews, у которого есть 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"));

    }

Я думаю, что мне нужно каким-то образом передать этот первый параметр в String Array и затем отсортировать его.

Идея состоит в том, чтобы метод сортировки был нажат на кнопку в той же самой Деятельности, где отображается RecyclerView, и при нажатии ее придется сортировать, не переходя в другую активность.

Я немного потерялся здесь.

В резюме, что я пытаюсь сделать, это иметь buttom, который упорядочивает элементы (которые в данном случае являются CardView) RecyclerView в алфавитном порядке на основе параметра title.

Является ли моя идея правдой, есть ли у вас другой способ сделать это или что мне делать, чтобы это сделать?

Спасибо миллион.

Ответы

Ответ 1

Самый простой способ сортировки списка - использовать 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).