我寫了一些代碼,使用Gson庫創建json數據的數組列表,這看起來像這樣。在特定的json元素上對jsonobjects的arraylist排序
{
"filename": "somefile.mp3"
"artist": "artist1"
"title": "title1"
"genre": "rock"
}
{
"filename": "anotherfile.mp3"
"artist": "artist2"
"title": "title2"
"genre": "electro"
}
我試圖弄清楚如何可以通過藝術家元素排序這個數組列表。目前它只是按照它最初通過文件名創建的方式排序。閱讀stackoverflow建議我應該嘗試使用自定義比較。我一直在看這個答案(How to sort GSON Array based on a key?),但它不適合我。
我有一個名爲Tracks.class自定義類具有所有getter和建立制定者拿着標題,藝術家,流派等
TrackFileManager.class是串行器,所有的JsonObject.addProperty代碼並返回一個jsonObject返回到MainActivity。
這個jsonObject然後被添加到一個ArrayList中,在MainActivity中調用如下的值。 (listOfFiles是保存我的MP3的所有文件名的另一個數組列表)
final GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Track.class, new TrackFileManager());
gsonBuilder.setPrettyPrinting();
//diasableHtmlEscaping stops & turning into \u0026
final Gson gson = gsonBuilder.disableHtmlEscaping().create();
values = new ArrayList<String>();
for (String file : listOfFiles){
t = new Track(path,file);
values.add(gson.toJson(t));
}
Collections.sort(values, new MyJSONComparator());
其他的代碼,我是一個MyJSONComparator.class,低於
public class MyJSONComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
}
這就產生任何錯誤,但它不排序它,我知道它不會,但它的唯一方法,它不提示Android Studio中的錯誤。如果我將代碼更改爲implements Comparator<Track>
,則Collections.sort
會產生錯誤。除非我有比較器,否則我不能訪問我要排序的元素,如s1.getArtist
等等,除非那不是正確的方法嗎?我也嘗試過ArrayList<String>
以及幾乎所有其他類型的組合,除此之外的其他組合。
我明顯做錯了事,我很確定我幾乎在那裏。 任何人都可以幫助或至少指向正確的方向嗎?
EDIT
public class MyJSONComparator implements Comparator<Track> {
@Override
public int compare(Track s1, Track s2) {
return s1.artist.compareTo(s2.artist);
}
}
上面代碼導致Collections.sort(values,new MyJSONComparator());
錯誤。
Sort (List<String>, java.util.Comparator<? super java.lang.string> in Collections cannot be applied to ArrayList<String>, com.example.MyJSONComparator.
藝術家爲紅色,並說「不能解析符號」 – zoonosis 2014-10-18 12:56:35
這對於以下對象?? { POJO類‘文件名’:‘somefile.mp3’ ‘藝術家’:「artist1 「 ‘稱號’:‘TITLE1’ ‘流派’:‘搖滾’ } TrackFileManager ....如果是,那麼這應該在你的清單,這是應該實現比較 – 2014-10-18 13:08:21
其GSON的ArrayList類?創建基於Tracks類的JsonObjects,所以POJO是Tracks,TrackFileManager是創建json的序列化程序。 – zoonosis 2014-10-18 13:12:05