2015-12-05 74 views
1

你好,我正在學習android和試圖顯示自定義的ListView,但它無法加載。這個問題來自我的查詢,因爲列表是空的。請按照下面的解析示例,我做錯了什麼?無法檢索使用解析查詢

下面是我的代碼使用片段來顯示視圖,因爲它未能充氣。

EventTab.java:

 //query Events for current user 
     private void queryEventListFromParse(){ 

      //Create query for objects of type "Event" 
      ParseQuery<ParseObject> query = ParseQuery.getQuery("Event"); 
      // Restrict to cases where the author is the current user. 
      //pass in a ParseUser and not String of that user 

      query.whereEqualTo("author", ParseUser.getCurrentUser()); 
      query.orderByAscending("createAt"); 

      // Run the query 
      query.findInBackground(new FindCallback<ParseObject>() { 
       @Override 
       public void done(List<ParseObject> eventList, ParseException e) { 
        if (e == null) { 
         // If there are results, update the list of event and notify the adapter 
         Log.d(TAG, "Im in background"); //im able to display image 
         eventList.clear(); 
         for (ParseObject event : eventList) { 
          eventList.add(event); 
         } 

         updateEventsList(); 

        } else { 
         Log.d(TAG, "Event retrieval error: " + e.getMessage()); 
        } 
       } 
      }); 
     } 

重要更新: 感謝陰影的Droid您指出的錯誤。之所以getView()失敗,是因爲名爲evenList的List返回0,無法調用getView,因此返回0,並且無法顯示列表。

下面是錯誤消息,當我評論eventList.clear();

錯誤從控制檯:

12-05 04:52:10.511 11450-11450/com.example.davchen.skibuddies E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.example.davchen.skibuddies, PID: 11450 
    java.util.ConcurrentModificationException 
      at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573) 
      at com.example.davchen.skibuddies.Fragments.EventTab$1.done(EventTab.java:87) 
      at com.example.davchen.skibuddies.Fragments.EventTab$1.done(EventTab.java:80) 
      at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:115) 
      at android.os.Handler.handleCallback(Handler.java:739) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:145) 
      at android.app.ActivityThread.main(ActivityThread.java:5942) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
+0

如果得到任何錯誤或崩潰檢查,然後分享它 –

+0

後listview_event_item.xml和堆棧跟蹤 – johnrao07

+0

@ρяσѕρєяK它無法顯示自定義列表。 – user3497437

回答

1

這是發生bcoz你逝去的空EVENTLIST到您的適配器。參數和全局變量存在混淆。
全局變量private List<Event> eventList;它被初始化爲在onCreate中爲空。

而在done方法參數你清除你解析eventList.clear();

query.findInBackground(new FindCallback<ParseObject>() { 
       @Override 
       public void done(List<ParseObject> eventList, ParseException e) { 
        if (e == null) { 
         // If there are results, update the list of event and notify the adapter 
         Log.d(TAG, "Im in background"); //im able to display image 
         eventList.clear(); 
         for (ParseObject event : eventList) { 
          eventList.add(event); 
         } 

         updateEventsList(); 

        } else { 

因此您的適配器獲得計數爲零,它不會調用getView方法後得到的名單
作爲一個解決方案,我建議通過註釋eventList.clear();如果正常工作,你仍然需要清除列表,然後去不同的變量或參數名稱

+0

是的,謝謝,我注意到了。我評論它,但返回一個錯誤? – user3497437

+0

然後請更新與該錯誤的問題 –

+0

@ShadwoDroid更新,並感謝 – user3497437