2015-09-06 18 views
8

Tôi có một recyclerView đầy đủ của CardViews có 2 paramteres (Cả hai đều là Strings), một trong số đó là một tiêu đề, tôi muốn có một nút để sắp xếp chúng theo thứ tự bảng chữ cái dựa trên tittle.Cách sắp xếp Strings trên Android RecyclerView?

vì nó không có quá nhiều yếu tố tôi quyết định sử dụng sắp xếp chèn đó là o (n^2) và điều này là thực hiện của tôi:

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]); 


     } 

      } 

Phải mất một mảng của Strings và đơn đặt hàng họ .

Và đây là phương pháp RecyclerView tôi mà sẽ đưa các thông số:

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")); 

    } 

Tôi nghĩ rằng tôi cần phải vượt qua bằng cách nào đó mà paramater đầu tiên vào một String Array và sau đó sắp xếp nó.

Ý tưởng là có phương pháp sắp xếp trong một nút trong cùng một Hoạt động nơi RecyclerView được hiển thị và khi được nhấn, nó sẽ phải sắp xếp chúng mà không cần đến Hoạt động khác.

Tôi bị lạc ở đây.

Tiếp tục những gì tôi đang cố gắng làm là để có một buttom đặt hàng các phần tử (trong trường hợp này là CardView) của RecyclerView theo thứ tự bảng chữ cái dựa trên tiêu đề "tiêu đề".

Ý tưởng của tôi là đúng, bạn có cách nào khác để làm điều này hay tôi nên làm gì để thực hiện việc này?

Cảm ơn một triệu.

Trả lời

21

Cách dễ nhất để sắp xếp một danh sách là sử dụng java.util.Collections

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

này sẽ so sánh các nhân vật chính của nhân vật. và sẽ sắp xếp danh sách của bạn từ a đến z.

Đừng quên sau khi sửa đổi để thông báo cho danh sách rằng dữ liệu đã thay đổi với notifyDataSetChanged() (từ số RecyclerView.Adapter) của bạn.

+1

Mã của bạn đã làm việc cho tôi một cách hoàn hảo nhưng tôi nên áp dụng 'notifyDataSetChanged()' trong mã của mình ở đâu? –

+0

Tôi đã giải quyết vấn đề bằng cách áp dụng 'adapter.notifyDataSetChanged()' sau khi sắp xếp .Thanks :) –

+0

@SamarthKejriwal Ah vâng, tôi đã không chính xác nguồn gốc của phương thức. Tôi thêm từ lớp mà phương thức thuộc về;) – xiaomi

Các vấn đề liên quan