2017-09-19 33 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); 

他们真的应该是同样的事情,但我发现有是糖的一些无证的小渔获。