2015-12-17 49 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中显示非复制值。 –