2017-01-05 136 views
1

我正在使用this庫來從服務器獲取數據。數據在服務器中解碼爲JSONObject。我所做的方法將調用url並返回mysql表中的行數。Android - 在繼續使用方法之前等待json獲取值

ParseLevels.java

static public int countLevels() { 

     final int[] count = {0}; 
     AndroidNetworking.get("https://example.com/gameLevels.php?option=count") 
       .setPriority(Priority.LOW) 
       .build() 
       .getAsJSONObject(new JSONObjectRequestListener() { 
        @Override 
        public void onResponse(JSONObject response) { 
         // responce is {count:20} 
         try { 
          count[0] = response.getInt("count"); // this is getting the value of 20 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

         Log.d("responce_app", String.valueOf(count[0])); 
        } 
        @Override 
        public void onError(ANError error) { 
         // handle error 
         Log.d("responce_app", String.valueOf(error)); //Logs out 20 
        } 
       }); 

     return count[0]; // return always 0 
    } 

當我從MainActivity Log.d("responce_app", String.valueOf(ParseLevels.countLevels())); 調用該方法返回總是0

然而,該方法的工作,我無法正確地從我的方法返回的值

我知道在獲取jsonObject之前發回了返回,但是如何等待該方法獲取jsonObject並返回值後?

在iOS中我使用類似:

static func getLevels(feedsArray: (levelsCount : [Int]) -> Void) { 


} 

怎麼能轉換成Java呢?

回答

0

我該如何等待獲取jsonObject的方法並返回 的值?

兩個選項:內部onResponse方法

1.待辦事項代碼要根據請求結果來執行。

2.使用interface創建事件偵聽器和實現它在countLevels方法調用者類來執行的代碼塊時onResponse方法執行完成

+0

謝謝。我有創建事件監聽器使用接口:'公共接口CountLevelCallback {0} {0} {0} }' – SNos

+0

@SNos:好的,如果它工作的很好。 –

+0

是啊,工作很好 – SNos

0

你應該看看從資料庫中的自述中的Making Synchronous Request例如: https://github.com/amitshekhariitbhu/Fast-Android-Networking

ANRequest request = AndroidNetworking.get("https://fierce-cove-29863.herokuapp.com/getAllUsers/{pageNumber}") 
        .addPathParameter("pageNumber", "0") 
        .addQueryParameter("limit", "3") 
        .build(); 
ANResponse<List<User>> response = request.executeForParsed(new TypeToken<List<User>>() {}); 
if (response.isSuccess()) { 
    List<User> users = responseTwo.getResult(); 
} else { 
    //handle error 
} 

你會回報您計數在response.isSuccess()條件。

+0

我已經試過這種但是,我得到的錯誤'無法解析法「isSuccess ()' – SNos

相關問題