0
votes

Comment observer Livedata avec une pagination Android à Kotlin

Je ne peux pas observer le LivetaA

code> modification de l'activité, mais l'interface utilisateur est mise à jour (la liste a augmenté dans ActiveTty).

Je ne peux que l'observer une fois lorsque la LiveData est initialisé. Lorsque la bibliothèque de pagination appelle la méthode LoadAfter, l'interface utilisateur est mise à jour, mais n'a pas appelé pagelist.Observe {} P>

Tout d'abord, j'ai mis le processus de demande de données dans les coroutines de Kotlin, je ne peux pas observer la Changement de données, alors j'ai utilisé des demandes asynchrones à la place. Il n'a toujours pas fonctionné. P>

Voici mon code: p>

Code principal de la lecture de la lecture P>

interface WorkCommentApi {

    /**
     * list comment
     */
    @GET("public/work/comment")
    fun listComment(@Query("workId") workId: Long, @Query("current") current: Long, @Query("size") size: Int): Call<TResult>
}


0 commentaires

3 Réponses :


0
votes

Ceci se produit car chaque fois que vous appelez vm.listmendment (WorkID) code>, l'objet que vous avez d'abord lié dans l'activité est tué et que nouvel objet est créé.

Vous pouvez utiliser transformations code> avec mediatorlivedata ​​code>. p>

Activité: P>

class BaseRepository(val app: Application) {

    private val logout = MutableLiveData<PagedList<WorkComment>>()

    fun getLogoutResponse(): LiveData<PagedList<WorkComment>> = logout

   override fun create(): DataSource<Long, WorkComment> {
  //when you get your data
   logout.value = // your value
}


2 commentaires

Je viens d'appeler vm.listmendment (workid) une fois lorsque l'activité est créée, a-t-elle été créée deux fois ou plus?


Non .. Mais j'avais fait face à un problème similaire, N Mediatorlivedata a résolu le problème. Donc, vous pouvez essayer cette approche



0
votes

Vous devez avoir votre identifiant de travail être des données mutables à respecter par la transformation. Donc, chaque fois que vous mettez à jour votre travail, ID, cela cherchera des commentaires. Comme ainsi ...

ViewModel: xxx

Puis dans votre activité, observez xxx

Chaque fois que vous mettez à jour le workidMutableliveData en effectuant un xxx

... Le recyclageview sera mis à jour. Votre RECYCLERVIEW doit hériter de PageDlistadapter.


2 commentaires

Le workid est une constante qui ne change pas dans cette activité, avez-vous une autre façon? Je ne sais pas pourquoi je ne peux pas observer le commentaire


Comment votre liste de commentaires change-t-elle? Votre source de données met à jour la liste de commentaires. L'identifiant de travail est ce qui générer les commentaires.



0
votes

Après tester, je savais que la liste ne pouvait pas être observée lorsqu'il a changé de données interne, comme ajouter () , supprimer () . etc.

On ne sera observé que lorsque sa référence a été modifiée, comme la création ou l'attribution d'une opération:
list.value = null

Donc, je ne pouvais donc pas observer le changement de données de LivetaA


0 commentaires