2015-12-17 52 views
0

我在我的Android應用程序中使用Realm。交易後刷新RealmList - Android

我做解析JSON和接收RealmObject後接收後,以下稱爲從我的後端將MessageList

if (messageList != null) { 
     RealmList<Message> messages = messageList.getItems(); 
     if (messages.size() > 0) { 

      //Populate Recycler view UI 
      displayMessages(messages); 

      //Start transaction 
      dbManager.copyToRealm(messages); 
      //End transaction.... 
     } 
    } 



public void displayMessages(RealmList<Message> messages) { 
    mAdapter = new EventsAdapter(getContext(), mPresenter, messages, 
      mPolentaApi.getCommunity()); 
    mRecyclerView.setAdapter(mAdapter); 
} 

消息是RealmObject爲好。

我可以在我的應用程序的另一個區域修改消息,並且需要將這些更改反映到我的用戶界面中。

這裏是我的適配器:

public MessageAdapter(Context context, RealmList<Message> messages){ 
} 

我使用notifyDataSetChanged()與我的適配器嘗試,但它不工作。

我知道RealmBaseAdapter的,但這僅適用於RealmResults https://realm.io/docs/java/0.85.1/api/io/realm/RealmBaseAdapter.html

有什麼想法?

回答

0

您需要將複製的消息添加到適配器。境界不修改原有的,而是返回管理副本,其中的變化會反映:https://realm.io/docs/java/latest/api/io/realm/Realm.html#copyToRealm-E-

如果你想顯示會自動更新你必須做這樣的事情的消息:

List<Message> managedMessages = dbManager.copyToRealm(message); new MessageAdapter(context, managedMessages);

+0

我已經這樣做了,請參閱上面的displayMessages方法 – AndroidEnthusiast

+0

它看起來不是這樣。在執行'copyToRealm()'之前,您正在調用'displayMessage()',這意味着您在UI中顯示非複製值。 –