Contexte: J'expérimente avec une application de messagerieParse SDK Android: ClassCastException lorsque LocalDatastore est activé et la liste des messages sous-classe est chargé à partir du serveur
Problème Description: Normalement Codesnipped 2 œuvres comme charme et charges les données du serveur. Mais lors de l'activation du LocalDatastore avec Codesnipped 1, l'erreur
java.lang.ClassCastException: com.parse.ParseObject ne peut pas être jeté à at.test.activity.Message
arrises. Message est une sous-classe de ParseObject. Lorsque vous regardez avec le débogueur à la ligne où l'erreur se produit, on peut voir que la liste qui est passée à la fonction done contient un seul objet du type "Message" dans la première postition et tous les autres éléments ont le type "ParseObject" (-> Capture d'écran: DebuggerOutput when local datastore is activated) . Sans le magasin de données local activé, chaque élément de cette liste est de type "Message".
Qu'est-ce que je fais mal? Merci d'avance!
Codesnipped 1:
Parse.initialize(new Parse.Configuration.Builder(this)
.applicationId("test")
.enableLocalDataStore()
.clientBuilder(builder)
.server("http://someinstallation.com/parse/")
.build());
Codesnipped 2:
ParseQuery query = ParseQuery.getQuery(Message.class);
ArrayList idsToQuery = new ArrayList<>();
idsToQuery.add(getSenderID());
idsToQuery.add(getRecipiantID());
query.whereContainedIn("sender", idsToQuery);
query.whereContainedIn("recipiant", idsToQuery);
query.orderByDescending("createdAt");
query.findInBackground(new FindCallback() {
public void done(List messages, ParseException e) {
if (e == null) {
addMessagesTomList(messages);
}
else {
Log.e("message", "Error Loading Messages" + e);
}
}
}); `