2017-09-19 1 views
0

J'ai un problème en affichant le sur la carte en mode hors ligne. J'ai utilisé le sucre pour gérer la manipulation de la base de données. J'ai utilisé le code ci-dessous.Les emplacements de marqueur ne peuvent pas être récupérés depuis la base de données

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

Chaque fois que je me connecte à Internet, toutes les données du serveur seront récupérés et stockés dans la base de données locale. La chose est, je ne peux pas comprendre pourquoi il ne récupère pas les données de la base de données locale en mode hors ligne. C'est la première fois que j'utilise la bibliothèque de sucre, alors j'espère que quelqu'un là-bas pourrait m'aider avec ça. Je vous remercie.

PS. J'utilise google api.

+0

Avez-vous connecté votre liste de valeurs 'markersFromDatabase' avant if (! MarkersFromDatabase.isEmpty()) cette ligne – UltimateDevil

+0

Oui. Toutes les données ont été enregistrées dans la base de données, comme vu dans le logcat dans le studio android. – Cross

Répondre

0

Faire l'hypothèse que vous enregistrez définitivement vos données correctement, essayez de changer ceci:

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

à:

markersFromDatabase = Result.listAll(Result.class); 

Ils devraient vraiment être la même chose, mais je l'ai trouvé là sont quelques petites captures sans papiers partout dans le sucre.