2015-12-17 3 views
0

Я использую Realm в своем приложении для Android.Обновление 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

Необходимо добавить скопированные сообщения в адаптер. Realm не изменяет оригинальные из них, но вместо того, чтобы вернуть управляемую копию, где изменения будут отражены: 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

Это не выглядит так. Вы вызываете 'displayMessage()' перед выполнением 'copyToRealm()', что означает, что вы показываете не скопированные значения в пользовательском интерфейсе. –

Смежные вопросы