2015-06-25 85 views
1

我正在使用Parse.com數據庫系統。在我的Android應用程序中,用戶選擇他們是哪個人(所有數據已經​​加載到數據庫中)。用戶被保存並記住。Parse.com - Android - 在大對象列表中搜索3個對象

該應用程序是我的教堂主辦的本地排球比賽。我有一項活動向他們展示了未來的3場比賽。

這是我的問題。我如何掃描整個Parse.com類並從中取出3個對象?

這裏是我的Parse.com類(這只是一些假團隊一起打耳光,所以我可以測試應用程序(事件在10個月內))。

鏈接:http://i.gyazo.com/c86a2a2f50a4bfdd8762e689c1b77585.png

(我不能直接把圖片了(我需要10 REP))。

這裏是我的代碼變量:

//Variable Members 
String usernameString; 
String ageString; 
String ageGroupGames; 

String game1; 
String game2; 
String game3; 

int ageGroupInt; 
int team; 


int i = 0; 
int i2; 
int i3; 

int MethodGameLog = 0; 
int simpleID1; 
String teamNumber; 

TextView username; 
TextView sched1; 
TextView sched2; 
TextView sched3; 

TextView gameL1; 
TextView gameL2; 
TextView gameL3; 

String g1t1; 
String g1t2; 
String g2t1; 
String g2t2; 
String g3t1; 
String g3t2; 

g1t1代表遊戲1隊1,依此類推。所有變量都設置爲它們應該是的,以及所有but g1t1, g2t1, ect

這是我嘗試代碼:

public void singleGameData(int simpleID) { 
    ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(ageGroupGames); 

    simpleID1 = simpleID; 

    query.whereEqualTo("team1", simpleID); 
    query.findInBackground(new FindCallback<ParseObject>() { 
     @Override 
     public void done(List<ParseObject> list, ParseException e) { 
      if (e == null) { 
       if(team == -3){ 
        Toast.makeText(getApplicationContext(), "The toast has been burnt!", Toast.LENGTH_SHORT); 
        return; 
       } 
       for (i = i; i < list.size(); i++) { 

        if(MethodGameLog == 0){ 
         g1t1 = list.get(i).getString("team1"); 
         g1t2 = list.get(i).getString("team2"); 
        } else if (MethodGameLog == 1){ 
         g2t1 = list.get(i).getString("team1"); 
         g2t2 = list.get(i).getString("team2"); 
        } else if(MethodGameLog == 2){ 
         g3t1 = list.get(i).getString("team1"); 
         g3t2 = list.get(i).getString("team2"); 
        } else { 
         Toast.makeText(getApplicationContext(), "The toast has been fried!", Toast.LENGTH_SHORT); 
        } 

        MethodGameLog++; 

        if(MethodGameLog < 2) { 
         for (i = 0; i < list.size(); i++) { 
          singleGameData(simpleID1); 
         } 
        } 
       } 
      } else { //if no game1 in team1 search 
       for (i = i; i < list.size(); i++) { 
        if(MethodGameLog == 0){ 
         g1t1 = list.get(i).getString("team1"); 
         g1t2 = list.get(i).getString("team2"); 
         i2 = i; 
        } else if (MethodGameLog == 1){ 
         g2t1 = list.get(i).getString("team1"); 
         g2t2 = list.get(i).getString("team2"); 
        } else if(MethodGameLog == 2){ 
         g3t1 = list.get(i).getString("team1"); 
         g3t2 = list.get(i).getString("team2"); 
        } 
        MethodGameLog++; 

        if(MethodGameLog < 2){ 
         for (i = 0; i < list.size(); i++) { 
          singleGameData(simpleID1); 
         } 
        } 
       } 
      } 
     } 
    }); 
} 

我能得到什麼,當我運行的方法:我沒有得到任何錯誤,但我得到:

g1t1 = null 
g1t2 = null 
ect........ 

我把它們變成一個字符串:

String game1 = g1t1 + " vs " + g1t2 

,然後在屏幕上設置

textview1.setText(game1); 

但我在屏幕上看到的是:

null vs null 
+0

你可以添加日誌消息findcallback的完成方法,並檢查您的查詢檢索你需要的數據? – 55597

+0

您可以提供您的要求,沒有所有的細節,因爲我有點混淆你的實際要求是什麼。 –

+0

@ 55597我已經添加log.w消息和日誌不**顯示他們。我在** onCreate **方法中調用方法(在調用了其他所有方法(因此每個需要事先定義的變量都已定義)之後))。我回顧了我自己的代碼,並且看起來一切都已到位。 Thx的答覆。沒有很多人知道Parse.com。 –

回答

0

如果你只是想獲得下一個即將到來的三場比賽,這是你應該怎麼做。根據您的喜好更改orderBy升序或降序。

ParseQuery<ParseObject> query = ParseQuery.getQuery("YOUR_CLASS_NAME"); 
query.orderByDescending("gameTime"); 
query.setLimit(3); 
query.findInBackground(new FindCallback<ParseObject>() { 
    public void done(List<ParseObject> list, ParseException e) { 
    if (e == null) { 
     // list object will contain only 3 objects. 
    } else { 
     //objectRetrievalFailed(); 
    } 
    } 
}); 

希望這有助於

+0

我愛你。沒有同性戀。 –