2011-10-18 136 views
0

hy!JSON解析顯示奇怪的行爲

我有一個JSON字符串:

{"responseData":{"days":[{"date":1289430000,"lessons":[{"lesson":"3","classname":"XXXX","oldTeacher":"RUMET","newTeacher":"JAKOB","oldSubject":"0AM","newSubject":"0AM","oldRoom":"104","newRoom":"104 ","comment":""},{"lesson":"4","classname":"XXXX","oldTeacher":"RUMET","newTeacher":"JAKOB","oldSubject":"0AM","newSubject":"0APH","oldRoom":"104","newRoom":"107 ","comment":"Verlegtvon"},{"lesson":"8","classname":"XXXX","oldTeacher":"JAKOB","newTeacher":"","oldSubject":"0APH","newSubject":"","oldRoom":"107","newRoom":" ","comment":"Entfall"}]},{"date":1289516400,"lessons":[{"lesson":"1","classname":"XXXX","oldTeacher":"KAIS","newTeacher":"","oldSubject":"0RW1","newSubject":"","oldRoom":"107","newRoom":" ","comment":"Entfall"},{"lesson":"2","classname":"XXXX","oldTeacher":"KAIS","newTeacher":"TRAUN","oldSubject":"0RW1","newSubject":"0BO","oldRoom":"107","newRoom":"107 ","comment":""}]},{"date":1289948400,"lessons":[{"lesson":"5","classname":"XXXX","oldTeacher":"KIES","newTeacher":"","oldSubject":"0RK","newSubject":"","oldRoom":"107","newRoom":" ","comment":"Entfall"}]},{"date":1290121200,"lessons":[{"lesson":"6","classname":"XXXX","oldTeacher":"KIES","newTeacher":"","oldSubject":"0RK","newSubject":"","oldRoom":"107","newRoom":" ","comment":"Entfall"}]}]},"responseDetails":null,"responseStatus":200} 

爲了更好地理解過去的代碼http://json.parser.online.fr/

,我又把它解析爲Entry對象列表(SPEntry):

public class EntryParse{ 

    ArrayList<SPEntry> list; 
    public EntryParse(Context ctx, String par_json) 
    { 
     try 
     { 
      list = new ArrayList<SPEntry>(); 
       JSONArray array = new JSONArray(par_json); 

       for (int i = 0; i < array.length(); i++) {    //Datum 
        JSONObject json = array.getJSONObject(i); 

        Date date = new Date(json.getLong("date")*1000); 
        SimpleDateFormat ft = new SimpleDateFormat ("dd.MM.yyyy"); 

        JSONArray lessons = json.getJSONArray("lessons"); 

        for (int j = 0; j < lessons.length(); j++) {  //Stunden 

         JSONObject obj = lessons.getJSONObject(j); 
         SPEntry entry = new SPEntry(); 
         entry.date = ft.format(date); 
         entry.lesson = obj.optString("lesson"); 
         entry.teacher = obj.optString("oldTeacher"); 
         entry.newTeacher = obj.optString("newTeacher"); 
         entry.lesson = obj.optString("oldSubject"); 
         entry.newlesson = obj.optString("newSubject"); 
         entry.oldRoom = obj.optString("oldRoom"); 
         entry.newRoom = obj.optString("newRoom"); 
         entry.comment = obj.optString("comment"); 
         if(entry.comment.equals("Entfall")){ 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.entfall); 
         } 
         if(entry.comment.equals("Betreuung")){ 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.betreung); 
         } 
         if(entry.comment.equals("Verlegtvon")){ 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.verlegt); 
         } 
         else 
         { 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.empty); 
         } 


         list.add(entry); 

        } 

       } 

我的問題是圖片設置顯示一個奇怪的行爲。在第二課中,我沒有看到圖片,在其他所有情況下,我只能看到「Entfall」圖片。 在資源的開發圖片是不同

請幫

截圖名單:

http://img6.imagebanana.com/img/fnmedlrr/device20111018181454.png

+2

將這個如果(entry.comment.equals( 「Verlegtvon」)){entry.picture = BitmapFactory.decodeResource(ctx.getResources(),R.drawable.entfall ); }並檢查你是否也獲得了第二個元素的相同圖像。 – user370305

+0

和Yashwanth庫馬爾是正確的使用,否則它,而不是簡單的,如果。 – user370305

+0

如果你在第二個元素(列表行)中得到了相同的圖像,那麼你有可能獲得drawable的問題。 – user370305

回答

4
if(entry.comment.equals("Entfall")){ 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.entfall); 
         } 
         if(entry.comment.equals("Betreuung")){ 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.betreung); 
         } 
         if(entry.comment.equals("Verlegtvon")){ 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.verlegt); 
         } 
         else 
         { 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.empty); 
         } 

如果你在代碼仔細看,最後你最終會與2倍的圖像,無論是emptyverlegtvon,使用否則,如果要解決的問題。嘗試下面的代碼,我剛添加else if

if(entry.comment.equals("Entfall")){ 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.entfall); 
         } 
         else if(entry.comment.equals("Betreuung")){ 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.betreung); 
         } 
         else if(entry.comment.equals("Verlegtvon")){ 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.verlegt); 
         } 
         else 
         { 
          entry.picture = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.empty); 
         } 
+0

hy我已經有if else部分之前,只有第二個圖像顯示 – test123123

+0

然後它有填充listView有問題,有時圖像重複在列表顯示。尋找類似的問題,這將解決問題。 –

+0

我張貼我的解決方案.... thx爲您的幫助 – test123123

1

在你的JSON字符串的第7個的條目,其中只有一個被使用一次,那就是Verlegtvon(這也恰好是第二項)。我想象可繪製的R.drawable.verlegt有什麼問題。

+0

這個問題沒有發生,當我改變如果條件 – test123123