2014-09-24 130 views
0

「tipolistView.setAdapter(listViewArrayAdapter)是否有可能通過一鍵排序JsonArrayJSONArray排序爲列表視圖 - 安卓

我的意思是,我有一個列表視圖,它正在建立這樣:

{"id":"1","nome":"glamourhood","tipo":"1"}, 
{"id":"2","nome":"Face da Mia","tipo":"2"}, 
{"id":"5","nome":"Team Transformerz","tipo":"3"}, 
{"id":"6","nome":"Face da Team de novo","tipo":"4"}, 
{"id":"7","nome":"Tiago Faria Fitness","tipo":"5"}, 
{"id":"8","nome":"Nuno Soares","tipo":"6} 

,我想它是「TIPO」從較小的排序,以更大的,甚至更好:按類型* ID(這將是真棒)

這是可以實現在Android

+1

嗯,這是後在內存中,你可以隨心所欲地排序。 – 2014-09-24 13:52:01

+2

是的。這是可以實現的。 – Adam 2014-09-24 13:52:17

+0

它是可以實現的,但我相信你將不得不編碼解決方案來自己實際分類。除非有人已經這樣做,並將代碼發佈到某處 – 2014-09-24 14:08:13

回答

0

deseri? ALIZE您的JSON爲對象,如 (假設這些都是電影片名)

@Serializable 
public class Movie { 
    private int id; 
    @SerializedName("nome") 
    private String name; 
    private int tipo; 

    public Movie(); 

    //getter & setter 
} 

對於反序列化,你可以使用GSON例如。我已經添加了一個用於在使用GSON時將json字段映射到對象(nome和name)中的不同字段的示例。

我現在無法想出反序列化的代碼,但是您會在網上找到大量資源。必須somethiong,如:

final Movie movie = gson.fromJson(yourJsonInputReader, Movie.class); 

反序列化的JSONs到對象後,你可能有一個List<Movie> movies。現在,您可以用任何您想要的方式對此列表進行分類,爲此可使用CustomCoparator

public class MovieComparator implements Comparator<Movie>{ 
    public enum Field { 
     ID, TIPO; 
    } 

    private Field field; 

    public MovieComparator(Field field) { 
     this.field = field; 
    } 

    @Override 
    public int compare(Movie mov1, Movie mov2) { 
    int comparison = 0; 
    switch(field) { 
    case ID: 
     comparison = mov1.getId().compareTo(mov2.getId()); 
    case TIPO: 
     comparison = mov1.getTipo().compareTo(mov2.getTipo()); 
    } 
    return comparison; 
} 

然後使用它像:

Collections.sort(movies, new MovieComparator(MovieComparator.Field.ID)); 

讓我知道如果這個作品出來與否,不能檢查,因爲花時間與我的兒子)