2017-09-19 71 views
0

我在離線模式下顯示地圖中的時遇到問題。我用糖orm來處理數據庫操作。我使用下面的代碼。無法從數據庫檢索標記位置

DataResponse responseNiDatabase = new Gson().fromJson(JSON_STRING, DataResponse.class); 

    List<Result> markersFromDatabase = new ArrayList<>(); 

    if (responseNiDatabase != null){ 

     markersFromDatabase = responseNiDatabase.getResult(); 
     SugarRecord.saveInTx(markersFromDatabase); 
    } 
    else{ 
     Toast.makeText(this, "An error occured, fetching from database", Toast.LENGTH_SHORT).show(); 

     markersFromDatabase = Select.from(Result.class).list(); 
    } 

    if (!markersFromDatabase.isEmpty()){ 
     for (Result resultFromResponse : markersFromDatabase){ 
      mMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble(resultFromResponse.getLatitude()), 
        Double.parseDouble(resultFromResponse.getLongitude()))) 
        .title(resultFromResponse.getShopName()) 
        .snippet(resultFromResponse.getShopContact()) 
        .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon))); 
     } 
    } 
    else{ 
     Toast.makeText(this, "No markers available", Toast.LENGTH_SHORT).show(); 
    } 

每當我連接到互聯網,從服務器上的所有數據將被檢索並存儲在本地數據庫。問題是,我不明白爲什麼它不在離線模式下從本地數據庫檢索數據。這是我第一次使用sugar orm庫,所以我希望有人能幫助我。謝謝。

PS。我正在使用谷歌API。

+0

您是否在if(!markersFromDatabase.isEmpty())此行之前記錄了您的'markersFromDatabase'值列表 – UltimateDevil

+0

是的。每個數據都保存在數據庫中,如android studio中的logcat中所示。 – Cross

回答

0

使你肯定是正確的保存數據的假設,嘗試改變這一點:

markersFromDatabase = Select.from(Result.class).list(); 

到:

markersFromDatabase = Result.listAll(Result.class); 

他們真的應該是同樣的事情,但我發現有是糖的一些無證的小漁獲。