2014-09-24 61 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)); 

让我知道如果这个作品出来与否,不能检查,因为花时间与我的儿子)