我試圖通過使用names()方法(在本例中爲DD.MM.yyyy日期)獲得JSONObject的高級別分支,然後在運行標準for然後將它發送到ViewPager適配器,所以這個ArrayList必須被排序。JSONObject的names()方法返回不一致的結果
但問題是它不是舊版Android的排序。
這是我的setDayList和getDayList方法:
public static ArrayList<String> getDayList() {
if (mGunListesi == null) {
setDayList();
}
return mGunListesi;
}
private static void setDayList() {
// getAylikListeJson() returns main JSONObject
JSONArray array = getAylikListeJson().names();
ArrayList<String> arrayList = new ArrayList<>();
for (int i = 0; i < array.length(); i++) {
String date = null;
try {
date = array.getString(i);
} catch (JSONException e) {
e.printStackTrace();
}
if (dayAvailable(date)) {
arrayList.add(date);
}
}
mGunListesi = arrayList;
}
getDayList()的結果在Android 4.4的toString():
D/List: JSON dates: [26.02.2016, 15.02.2016, 02.02.2016, 11.02.2016, 04.02.2016, 02.03.2016, 01.03.2016, 01.02.2016, 05.02.2016, 08.02.2016, 23.02.2016, 18.02.2016, 29.02.2016, 10.02.2016, 24.02.2016, 03.03.2016, 16.02.2016, 04.03.2016, 22.02.2016, 09.02.2016, 17.02.2016, 19.02.2016, 03.02.2016, 25.02.2016, 12.02.2016]
getDayList()的結果在Android的toString() 6.0:
D/List: JSON dates: [01.02.2016, 02.02.2016, 03.02.2016, 04.02.2016, 05.02.2016, 08.02.2016, 09.02.2016, 10.02.2016, 11.02.2016, 12.02.2016, 15.02.2016, 16.02.2016, 17.02.2016, 18.02.2016, 19.02.2016, 22.02.2016, 23.02.2016, 24.02.2016, 25.02.2016, 26.02.2016, 29.02.2016, 01.03.2016, 02.03.2016, 03.03.2016, 04.03.2016]
而且JSON文件:
{
"01.02.2016": {
"yemek1": {
"id": 7,
"ad": "Etli Taze Fasulye",
"kalori": 262,
"gorsel": "/yemekler/etlitazefasulye.png"
},
"yemek2": {
"id": 17,
"ad": "Şehriyeli Bulgur Pilavı",
"kalori": 352,
"gorsel": "/yemekler/sehriyelibulgurpilavi.png"
},
"yemek3": {
"id": 26,
"ad": "Cacık",
"kalori": 97,
"gorsel": "/yemekler/cacik.png"
},
"yemek4": {
"id": 144,
"ad": "Meyve (Elma)",
"kalori": 142,
"gorsel": "/yemekler/meyveelma1.png"
},
"yemek5": {
"id": 193,
"ad": "Fırın Bamya",
"kalori": 77,
"gorsel": "/yemekler/bamya.png"
},
"durum": 1,
"gun": 1
},
"02.02.2016": {
"yemek1": {
"id": 73,
"ad": "Peynirli Börek",
"kalori": 362,
"gorsel": "/yemekler/borek.png"
},
"yemek2": {
"id": 163,
"ad": "Tavuk Çorbası",
"kalori": 1,
"gorsel": "/yemekler/resimyok.png"
},
"yemek3": {
"id": 11,
"ad": "Ayran",
"kalori": 60,
"gorsel": "/yemekler/ayran.png"
},
"yemek4": {
"id": 63,
"ad": "Meyve (Armut)",
"kalori": 128,
"gorsel": "/yemekler/meyvearmut.png"
},
"yemek5": {
"id": 245,
"ad": "Türlü (Etsiz)",
"kalori": 108,
"gorsel": "/yemekler/etsizturlu.png"
},
"durum": 1,
"gun": 1
},
"03.02.2016": {
"yemek1": {
"id": 25,
"ad": "Soslu Fırın Tavuk",
"kalori": 535,
"gorsel": "/yemekler/soslufirintavuk.png"
},
"yemek2": {
"id": 20,
"ad": "Mercimek Çorba",
"kalori": 244,
"gorsel": "/yemekler/mahlutacorba.png"
},
"yemek3": {
"id": 222,
"ad": "Yoğurtlu Revani",
"kalori": 595,
"gorsel": "/yemekler/revani.png"
},
"yemek4": {
"id": 275,
"ad": "Marul Salata",
"kalori": 93,
"gorsel": "/yemekler/mevsimsalata.png"
},
"yemek5": {
"id": 37,
"ad": "Zeytinyağlı Barbunya",
"kalori": 371,
"gorsel": "/yemekler/barbunya.png"
},
"durum": 1,
"gun": 1
},
"04.02.2016": {
"yemek1": {
"id": 1,
"ad": "Terbiyeli Köfte",
"kalori": 295,
"gorsel": "/yemekler/terbiyelikofte.png"
},
"yemek2": {
"id": 9,
"ad": "Soslu Makarna",
"kalori": 304,
"gorsel": "/yemekler/soslumakarna.png"
},
"yemek3": {
"id": 10,
"ad": "Yoğurt",
"kalori": 118,
"gorsel": "/yemekler/yogurt.png"
},
"yemek4": {
"id": 13,
"ad": "Havuç Salata",
"kalori": 105,
"gorsel": "/yemekler/salata.png"
},
"yemek5": {
"id": 87,
"ad": "Fırın Bezelye (Etsiz)",
"kalori": 190,
"gorsel": "/yemekler/firinbezelye.png"
},
"durum": 1,
"gun": 1
},
"05.02.2016": {
"yemek1": {
"id": 49,
"ad": "Etli Kuru Fasulye",
"kalori": 340,
"gorsel": "/yemekler/etlikurufasulye.png"
},
"yemek2": {
"id": 2,
"ad": "Şehriyeli Pirinç Pilavı",
"kalori": 367,
"gorsel": "/yemekler/sehriyelipilav.png"
},
"yemek3": {
"id": 10,
"ad": "Yoğurt",
"kalori": 118,
"gorsel": "/yemekler/yogurt.png"
},
"yemek4": {
"id": 24,
"ad": "Salatalık Turşusu",
"kalori": 7,
"gorsel": "/yemekler/salataliktursusu.png"
},
"yemek5": {
"id": 147,
"ad": "Patlıcan Güveç(Etsiz)",
"kalori": 292,
"gorsel": "/yemekler/patlicanguvec.png"
},
"durum": 1,
"gun": 1
},
"08.02.2016": {
"yemek1": {
"id": 143,
"ad": "Kıymalı Bezelye",
"kalori": 390,
"gorsel": "/yemekler/kiymalibezelye.png"
},
"yemek2": {
"id": 17,
"ad": "Şehriyeli Bulgur Pilavı",
"kalori": 352,
"gorsel": "/yemekler/sehriyelibulgurpilavi.png"
},
"yemek3": {
"id": 10,
"ad": "Yoğurt",
"kalori": 118,
"gorsel": "/yemekler/yogurt.png"
},
"yemek4": {
"id": 144,
"ad": "Meyve (Elma)",
"kalori": 142,
"gorsel": "/yemekler/meyveelma1.png"
},
"yemek5": {
"id": 37,
"ad": "Zeytinyağlı Barbunya",
"kalori": 371,
"gorsel": "/yemekler/barbunya.png"
},
"durum": 1,
"gun": 1
},
"09.02.2016": {
"yemek1": {
"id": 117,
"ad": "Mantarlı Çoban Kavurma",
"kalori": 278,
"gorsel": "/yemekler/mantarlicobankavurma.png"
},
"yemek2": {
"id": 2,
"ad": "Şehriyeli Pirinç Pilavı",
"kalori": 367,
"gorsel": "/yemekler/sehriyelipilav.png"
},
"yemek3": {
"id": 154,
"ad": "Sütlü İrmik Tatlısı",
"kalori": 309,
"gorsel": "/yemekler/sutluirmiktatlisi.png"
},
"yemek4": {
"id": 29,
"ad": "Marul Salata(1)",
"kalori": 93,
"gorsel": "/yemekler/marulsalata.png"
},
"yemek5": {
"id": 266,
"ad": "Sulu Patates(Etsiz)",
"kalori": 444,
"gorsel": "/yemekler/sulupatates.png"
},
"durum": 1,
"gun": 1
},
"10.02.2016": {
"yemek1": {
"id": 41,
"ad": "Sini Köfte",
"kalori": 460,
"gorsel": "/yemekler/sinikofte.png"
},
"yemek2": {
"id": 32,
"ad": "Nohutlu Bulgur Pilavı",
"kalori": 362,
"gorsel": "/yemekler/nohutlubulgurpilavi.png"
},
"yemek3": {
"id": 10,
"ad": "Yoğurt",
"kalori": 118,
"gorsel": "/yemekler/yogurt.png"
},
"yemek4": {
"id": 145,
"ad": "Meyve (Muz)",
"kalori": 90,
"gorsel": "/yemekler/muz.png"
},
"yemek5": {
"id": 190,
"ad": "Ispanak Kavurma",
"kalori": 42,
"gorsel": "/yemekler/ispanakkavurma.png"
},
"durum": 1,
"gun": 1
},
"11.02.2016": {
"yemek1": {
"id": 179,
"ad": "Sebzeli Tavuk Tava",
"kalori": 610,
"gorsel": "/yemekler/sebzelitavuktava.png"
},
"yemek2": {
"id": 2,
"ad": "Şehriyeli Pirinç Pilavı",
"kalori": 367,
"gorsel": "/yemekler/sehriyelipilav.png"
},
"yemek3": {
"id": 11,
"ad": "Ayran",
"kalori": 60,
"gorsel": "/yemekler/ayran.png"
},
"yemek4": {
"id": 13,
"ad": "Havuç Salata",
"kalori": 105,
"gorsel": "/yemekler/salata.png"
},
"yemek5": {
"id": 282,
"ad": "Patlıcan Musakka(Etsiz)",
"kalori": 292,
"gorsel": "/yemekler/patlicanmusakkaetsiz.png"
},
"durum": 1,
"gun": 1
},
"12.02.2016": {
"yemek1": {
"id": 5,
"ad": "Soslu Dalyan Köfte",
"kalori": 246,
"gorsel": "/yemekler/sosludalyankofte.png"
},
"yemek2": {
"id": 19,
"ad": "Şehriye Çorba",
"kalori": 126,
"gorsel": "/yemekler/sehriyecorba.png"
},
"yemek3": {
"id": 24,
"ad": "Salatalık Turşusu",
"kalori": 7,
"gorsel": "/yemekler/salataliktursusu.png"
},
"yemek4": {
"id": 234,
"ad": "Üzüm Hoşafı",
"kalori": 328,
"gorsel": "/yemekler/hosaf.png"
},
"yemek5": {
"id": 146,
"ad": "Karnabahar Kızartma",
"kalori": 184,
"gorsel": "/yemekler/karnabahar.png"
},
"durum": 1,
"gun": 1
},
"15.02.2016": {
"yemek1": {
"id": 77,
"ad": "Arap Tava",
"kalori": 234,
"gorsel": "/yemekler/araptava.png"
},
"yemek2": {
"id": 18,
"ad": "Peynirli Makarna",
"kalori": 341,
"gorsel": "/yemekler/peynirlimakarna.png"
},
"yemek3": {
"id": 155,
"ad": "Şalgam",
"kalori": 20,
"gorsel": "/yemekler/salgam.png"
},
"yemek4": {
"id": 144,
"ad": "Meyve (Elma)",
"kalori": 142,
"gorsel": "/yemekler/meyveelma1.png"
},
"yemek5": {
"id": 245,
"ad": "Türlü (Etsiz)",
"kalori": 108,
"gorsel": "/yemekler/etsizturlu.png"
},
"durum": 1,
"gun": 1
},
"16.02.2016": {
"yemek1": {
"id": 78,
"ad": "Buhara Kebap",
"kalori": 459,
"gorsel": "/yemekler/buharakebap.png"
},
"yemek2": {
"id": 17,
"ad": "Şehriyeli Bulgur Pilavı",
"kalori": 352,
"gorsel": "/yemekler/sehriyelibulgurpilavi.png"
},
"yemek3": {
"id": 10,
"ad": "Yoğurt",
"kalori": 118,
"gorsel": "/yemekler/yogurt.png"
},
"yemek4": {
"id": 24,
"ad": "Salatalık Turşusu",
"kalori": 7,
"gorsel": "/yemekler/salataliktursusu.png"
},
"yemek5": {
"id": 3,
"ad": "Zeytinyağlı Taze Fasülye",
"kalori": 153,
"gorsel": "/yemekler/zeytinyaglifasulye.png"
},
"durum": 1,
"gun": 1
},
"17.02.2016": {
"yemek1": {
"id": 235,
"ad": "Çıtır Tavuk-Par.Patates",
"kalori": 250,
"gorsel": "/yemekler/citirtavukparmakpatates.png"
},
"yemek2": {
"id": 273,
"ad": "Domates Çorba(1)",
"kalori": 245,
"gorsel": "/yemekler/domatescorba.png"
},
"yemek3": {
"id": 13,
"ad": "Havuç Salata",
"kalori": 105,
"gorsel": "/yemekler/salata.png"
},
"yemek4": {
"id": 222,
"ad": "Yoğurtlu Revani",
"kalori": 595,
"gorsel": "/yemekler/revani.png"
},
"yemek5": {
"id": 188,
"ad": "Zeytinyağlı Pırasa",
"kalori": 114,
"gorsel": "/yemekler/zeytinyaglipirasa.png"
},
"durum": 1,
"gun": 1
},
"18.02.2016": {
"yemek1": {
"id": 88,
"ad": "Etli Patates(Sulu)",
"kalori": 379,
"gorsel": "/yemekler/etlipatates.png"
},
"yemek2": {
"id": 17,
"ad": "Şehriyeli Bulgur Pilavı",
"kalori": 352,
"gorsel": "/yemekler/sehriyelibulgurpilavi.png"
},
"yemek3": {
"id": 10,
"ad": "Yoğurt",
"kalori": 118,
"gorsel": "/yemekler/yogurt.png"
},
"yemek4": {
"id": 267,
"ad": "Meyve(Armut-Deveci)",
"kalori": 128,
"gorsel": "/yemekler/armut.png"
},
"yemek5": {
"id": 87,
"ad": "Fırın Bezelye (Etsiz)",
"kalori": 190,
"gorsel": "/yemekler/firinbezelye.png"
},
"durum": 1,
"gun": 1
},
"19.02.2016": {
"yemek1": {
"id": 22,
"ad": "Etli Nohut",
"kalori": 373,
"gorsel": "/yemekler/etlinohut.png"
},
"yemek2": {
"id": 2,
"ad": "Şehriyeli Pirinç Pilavı",
"kalori": 367,
"gorsel": "/yemekler/sehriyelipilav.png"
},
"yemek3": {
"id": 10,
"ad": "Yoğurt",
"kalori": 118,
"gorsel": "/yemekler/yogurt.png"
},
"yemek4": {
"id": 144,
"ad": "Meyve (Elma)",
"kalori": 142,
"gorsel": "/yemekler/meyveelma1.png"
},
"yemek5": {
"id": 70,
"ad": "Patlıcan Kızartma",
"kalori": 294,
"gorsel": "/yemekler/patlicankizartma.png"
},
"durum": 1,
"gun": 1
},
"22.02.2016": {
"yemek1": {
"id": 97,
"ad": "Hasan Paşa Köfte (Püreli)",
"kalori": 480,
"gorsel": "/yemekler/hasanpasakofte.png"
},
"yemek2": {
"id": 9,
"ad": "Soslu Makarna",
"kalori": 304,
"gorsel": "/yemekler/soslumakarna.png"
},
"yemek3": {
"id": 11,
"ad": "Ayran",
"kalori": 60,
"gorsel": "/yemekler/ayran.png"
},
"yemek4": {
"id": 267,
"ad": "Meyve(Armut-Deveci)",
"kalori": 128,
"gorsel": "/yemekler/armut.png"
},
"yemek5": {
"id": 193,
"ad": "Fırın Bamya",
"kalori": 77,
"gorsel": "/yemekler/bamya.png"
},
"durum": 1,
"gun": 1
},
"23.02.2016": {
"yemek1": {
"id": 205,
"ad": "Barbunya",
"kalori": 371,
"gorsel": "/yemekler/barbunya.png"
},
"yemek2": {
"id": 36,
"ad": "Etli Pirinç Pilavı",
"kalori": 312,
"gorsel": "/yemekler/etlipilav.png"
},
"yemek3": {
"id": 10,
"ad": "Yoğurt",
"kalori": 118,
"gorsel": "/yemekler/yogurt.png"
},
"yemek4": {
"id": 13,
"ad": "Havuç Salata",
"kalori": 105,
"gorsel": "/yemekler/salata.png"
},
"yemek5": {
"id": 246,
"ad": "Kabak Kızartma",
"kalori": 1,
"gorsel": "/yemekler/kabakkizartma.png"
},
"durum": 1,
"gun": 1
},
"24.02.2016": {
"yemek1": {
"id": 49,
"ad": "Etli Kuru Fasulye",
"kalori": 340,
"gorsel": "/yemekler/etlikurufasulye.png"
},
"yemek2": {
"id": 17,
"ad": "Şehriyeli Bulgur Pilavı",
"kalori": 352,
"gorsel": "/yemekler/sehriyelibulgurpilavi.png"
},
"yemek3": {
"id": 10,
"ad": "Yoğurt",
"kalori": 118,
"gorsel": "/yemekler/yogurt.png"
},
"yemek4": {
"id": 64,
"ad": "Türlü Turşu",
"kalori": 10,
"gorsel": "/yemekler/turlutursu.png"
},
"yemek5": {
"id": 134,
"ad": "Yüzük Mantı Çorba",
"kalori": 148,
"gorsel": "/yemekler/yuzukmanti.png"
},
"durum": 1,
"gun": 1
},
"25.02.2016": {
"yemek1": {
"id": 278,
"ad": "Tavuk Izgara(1)",
"kalori": 620,
"gorsel": "/yemekler/tavuk.png"
},
"yemek2": {
"id": 20,
"ad": "Mercimek Çorba",
"kalori": 244,
"gorsel": "/yemekler/mahlutacorba.png"
},
"yemek3": {
"id": 4,
"ad": "Muhallebi",
"kalori": 240,
"gorsel": "/yemekler/Muhallebi.png"
},
"yemek4": {
"id": 13,
"ad": "Havuç Salata",
"kalori": 105,
"gorsel": "/yemekler/salata.png"
},
"yemek5": {
"id": 217,
"ad": "Patatesli Börek",
"kalori": 544,
"gorsel": "/yemekler/borek.png"
},
"durum": 1,
"gun": 1
},
"26.02.2016": {
"yemek1": {
"id": 40,
"ad": "Bahçevan Kebap",
"kalori": 357,
"gorsel": "/yemekler/bahcevankebap.png"
},
"yemek2": {
"id": 2,
"ad": "Şehriyeli Pirinç Pilavı",
"kalori": 367,
"gorsel": "/yemekler/sehriyelipilav.png"
},
"yemek3": {
"id": 154,
"ad": "Sütlü İrmik Tatlısı",
"kalori": 309,
"gorsel": "/yemekler/sutluirmiktatlisi.png"
},
"yemek4": {
"id": 275,
"ad": "Marul Salata",
"kalori": 93,
"gorsel": "/yemekler/mevsimsalata.png"
},
"yemek5": {
"id": 190,
"ad": "Ispanak Kavurma",
"kalori": 42,
"gorsel": "/yemekler/ispanakkavurma.png"
},
"durum": 1,
"gun": 1
},
"29.02.2016": {
"yemek1": {
"id": 143,
"ad": "Kıymalı Bezelye",
"kalori": 390,
"gorsel": "/yemekler/kiymalibezelye.png"
},
"yemek2": {
"id": 2,
"ad": "Şehriyeli Pirinç Pilavı",
"kalori": 367,
"gorsel": "/yemekler/sehriyelipilav.png"
},
"yemek3": {
"id": 10,
"ad": "Yoğurt",
"kalori": 118,
"gorsel": "/yemekler/yogurt.png"
},
"yemek4": {
"id": 64,
"ad": "Türlü Turşu",
"kalori": 10,
"gorsel": "/yemekler/turlutursu.png"
},
"yemek5": {
"id": 37,
"ad": "Zeytinyağlı Barbunya",
"kalori": 371,
"gorsel": "/yemekler/barbunya.png"
},
"durum": 1,
"gun": 1
},
"01.03.2016": {
"yemek1": {
"id": 44,
"ad": "İçli Köfte",
"kalori": 700,
"gorsel": "/yemekler/iclikofte.png"
},
"yemek2": {
"id": 35,
"ad": "Mahluta Çorba",
"kalori": 245,
"gorsel": "/yemekler/mahluta.png"
},
"yemek3": {
"id": 248,
"ad": "Halka Tatlı",
"kalori": 642,
"gorsel": "/yemekler/halkatatli.png"
},
"yemek4": {
"id": 275,
"ad": "Marul Salata",
"kalori": 93,
"gorsel": "/yemekler/mevsimsalata.png"
},
"yemek5": {
"id": 202,
"ad": "Karışık Kızartma(Soslu)",
"kalori": 224,
"gorsel": "/yemekler/karisikkizartma.png"
},
"durum": 1,
"gun": 1
},
"02.03.2016": {
"yemek1": {
"id": 16,
"ad": "Çoban Kavurma",
"kalori": 309,
"gorsel": "/yemekler/cobankavurma.png"
},
"yemek2": {
"id": 32,
"ad": "Nohutlu Bulgur Pilavı",
"kalori": 362,
"gorsel": "/yemekler/nohutlubulgurpilavi.png"
},
"yemek3": {
"id": 11,
"ad": "Ayran",
"kalori": 60,
"gorsel": "/yemekler/ayran.png"
},
"yemek4": {
"id": 144,
"ad": "Meyve (Elma)",
"kalori": 142,
"gorsel": "/yemekler/meyveelma1.png"
},
"yemek5": {
"id": 132,
"ad": "Kuru Fasülye(Etsiz)",
"kalori": 1,
"gorsel": "/yemekler/kurufasulyeetsiz.png"
},
"durum": 1,
"gun": 1
},
"03.03.2016": {
"yemek1": {
"id": 41,
"ad": "Sini Köfte",
"kalori": 460,
"gorsel": "/yemekler/sinikofte.png"
},
"yemek2": {
"id": 18,
"ad": "Peynirli Makarna",
"kalori": 341,
"gorsel": "/yemekler/peynirlimakarna.png"
},
"yemek3": {
"id": 155,
"ad": "Şalgam",
"kalori": 20,
"gorsel": "/yemekler/salgam.png"
},
"yemek4": {
"id": 148,
"ad": "Meyve (Portakal)",
"kalori": 171,
"gorsel": "/yemekler/portakal.png"
},
"yemek5": {
"id": 3,
"ad": "Zeytinyağlı Taze Fasülye",
"kalori": 153,
"gorsel": "/yemekler/zeytinyaglifasulye.png"
},
"durum": 1,
"gun": 1
},
"04.03.2016": {
"yemek1": {
"id": 180,
"ad": "Tavuk Pane+ Parmak Pat.",
"kalori": 468,
"gorsel": "/yemekler/panetavuk.png"
},
"yemek2": {
"id": 229,
"ad": "Beşamel Soslu Havuç Çorbası",
"kalori": 190,
"gorsel": "/yemekler/havuccorbasi.png"
},
"yemek3": {
"id": 29,
"ad": "Marul Salata(1)",
"kalori": 93,
"gorsel": "/yemekler/marulsalata.png"
},
"yemek4": {
"id": 110,
"ad": "Keşgül",
"kalori": 381,
"gorsel": "/yemekler/keskul.png"
},
"yemek5": {
"id": 147,
"ad": "Patlıcan Güveç(Etsiz)",
"kalori": 292,
"gorsel": "/yemekler/patlicanguvec.png"
},
"durum": 1,
"gun": 1
}
}
所以我失去了什麼?爲什麼Android 6.0會按順序返回結果,但舊版本按隨機順序返回?
編輯:
if (Utils.preLollipop()) {
Collections.sort(arrayList, new Comparator<String>() {
DateFormat format = new SimpleDateFormat(DateUtils.JSON_DATE_FORMAT); // JSON_DATE_FORMAT = "DD.MM.yyyy"
@Override
public int compare(String o1, String o2) {
try {
return format.parse(o1).compareTo(format.parse(o2));
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
});
}
我只能猜測,它是在新的Android版本的實現細節,如JSON對象根據定義無序。爲了解決這個問題,你應該看看創建你的JSON的代碼,並使它使用一個數組(它*是*排序的)日期。當然,也可以在之後對ArrayList進行排序。 – Marvin