2017-09-19 3 views
0

Ich habe Probleme, die in der Karte im Offline-Modus zu zeigen. Ich benutzte Zucker orm, um die Datenbankmanipulation zu handhaben. Ich habe den folgenden Code verwendet.Marker-Positionen können nicht aus der Datenbank abgerufen werden

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(); 
    } 

Jedes Mal, wenn ich mit dem Internet verbinden, werden alle Daten vom Server abgerufen und in der lokalen Datenbank gespeichert werden. Die Sache ist, ich kann nicht verstehen, warum es nicht die Daten aus der lokalen Datenbank im Offline-Modus abruft. Dies ist das erste Mal, dass ich die Sugar-Orm-Bibliothek benutze, also hoffe ich, dass jemand da draußen mir helfen könnte. Vielen Dank.

PS. Ich benutze Google API.

+0

Haben Sie Ihre Werteliste 'markersFromDatabase' zuvor protokolliert, wenn (! MarkersFromDatabase.isEmpty()) diese Zeile – UltimateDevil

+0

Ja. Alle Daten wurden in der Datenbank gespeichert, wie im Logcat in Android Studio angezeigt. – Cross

Antwort

0

die Annahme machen, dass Sie Ihre Daten korrekt auf jeden Fall zu speichern, versuchen, dies zu ändern:

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

zu:

markersFromDatabase = Result.listAll(Result.class); 

Sie wirklich die gleiche Sache sein sollte, aber ich habe es gefunden sind einige undokumentierte kleine Fänge in ganz Sugar.

Verwandte Themen