2016-05-19 14 views
0

Ich habe zwei Klassen.So sortieren Sie inneres Objekt beim Analysieren von JSON-Daten mit Gson

Klasse Unterkategorie

public class SubCategory implements Comparable<SubCategory>{ 

    private int scid; 
    private String scname; 

    public SubCategory(int scid, String scname) { 
     this.scid = scid; 
     this.scname = scname; 
    } 

    public int getScid() { 
     return scid; 
    } 

    public void setScid(int scid) { 
     this.scid = scid; 
    } 

    public String getScname() { 
     return scname; 
    } 

    public void setScname(String scname) { 
     this.scname = scname; 
    } 

    public int compareTo(SubCategory subCategory){ 
     return this.getScname().compareTo(subCategory.getScname()); 
    } 

} 

Klasse Kategorie

public class Category implements Comparable<Category>{ 
    private int id; 
    private String name; 
    private String image; 
    private int display_with; 
    private List<SubCategory> subcategories; 

    public Category(int id, String name, String image, int display_with, List<SubCategory> subcategories) { 
     this.id = id; 
     this.name = name; 
     this.image = image; 
     this.display_with = display_with; 
     this.subcategories = subcategories; 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getImage() { 
     return image; 
    } 

    public void setImage(String image) { 
     this.image = image; 
    } 

    public int getDisplay_with() { 
     return display_with; 
    } 

    public void setDisplay_with(int display_with) { 
     this.display_with = display_with; 
    } 

    public List<SubCategory> getSubcategories() { 
     return subcategories; 
    } 

    public void setSubcategories(List<SubCategory> subcategories) { 
     this.subcategories = subcategories; 
    } 

    public int compareTo(Category category){ 
     return this.getName().compareTo(category.getName()); 
    } 

}  

Dies ist retrofir Anfrage.

Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(Constants.BASERESTURL) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 

Ich bin Parsen der Daten mit Gson Bibliothek in Retrofit-Antwort

public void onResponse(retrofit.Response<List<Category>> response, Retrofit retrofit) { 
     loading.dismiss(); 
     List<Category> categories = response.body(); 
     Collections.sort(categories); 
     Utility.setCategories(categories); 
    }  

i die Kategorien mit Collections.sort sortieren (Kategorien);

Aber wie Unterkategorien mit Kategorie sortieren?

Antwort

1

Sie können dieses Recht in setSubcategories tun, also jedes Mal stellen Sie neue Unterkategorien werden sie sortiert bekommen:

public void setSubcategories(List<SubCategory> subcategories) { 
    Collections.sort(subcategories) 
    this.subcategories = subcategories; 
} 

Auch sollten Sie this.subcategories = subcategories; mit this.setSubcategories(subcategories) in Ihrem Constructor ersetzen.