Ich habe ein DAO wie folgt.Wie Datenbank löschen Ereignisse mit Architecture Components
@Dao
public interface PostDAO {
@Query("SELECT * FROM posts order by time DESC")
LiveData<List<Post>> getPosts();
@Insert(onConflict = OnConflictStrategy.REPLACE)
@NonNull
void insert(Post... posts);
@Delete
void delete(Post post);
@Query("SELECT * FROM posts WHERE id = :id")
Post getPost(String id);
@Query("SELECT * FROM posts WHERE id = :id")
LiveData<Post> getPostLiveData(String id);
}
Ich verstehe, dass ich für neue hinzugefügte Daten mit etwas wie dem folgenden hören kann.
postDAO().getPosts().observe(builder.getLifecycleOwner(), data::postValue)
Aber wie kann ich wissen, wenn ein Beitrag gelöscht wurde?
Ihre Antwort vor der Änderung über die Verwendung von Single können Sie darauf im Kommentar näher eingehen. – Raghunandan
Du weißt nicht, was du meinst :-) Du kannst entweder mit DiffUtil (oder dem dafür bereitgestellten Helfer) nach Änderungen suchen oder den Versuch mit einem anderen MutableLiveData <> verwenden, der benachrichtigt wird, sobald die Daten vorliegen geändert. Hängt vom Anwendungsfall ab. Wenn Sie eine "große" Liste haben, ist der Ansatz mit einem neuen LiveData-Objekt der beste Weg. –
Sollte es nicht sinnvoll sein, die "DiffUtil-Routine" über setValue() zu empfehlen? Ich habe data.setValue(); benutzt, aber mit dem Post stimmt etwas nicht. – Relm