我在websocket onReponse方法中从适配器向Websocket发送消息我正在更新Realm Model类但是进程正在后台进行而不是向前移动: 在这里你可以查看我的代码:
public static void updateMsgStatus(String userId, 字符串messageId, MSG_STATUS msgStatus){
Realm realm = Realm.getDefaultInstance();
Message message = realm.where(Message.class)
.equalTo(Message.USER_ID, userId)
.equalTo(Message.MESSAGE_ID, messageId).findFirst();
realm.beginTransaction();
message.setMsgStatus(msgStatus.ordinal());
realm.copyToRealmOrUpdate(message);
realm.commitTransaction();
}
在此行message.setMsgStatus(msgStatus.ordinal());什么都没有在后台进行,但我在这里等待:
如果我在这个方法中创建自己的线程,那么realm将不会通知适配器 在此先感谢:)
答案 0 :(得分:2)
您可以在绑定/呈现数据的领域实例上使用更改侦听器,文档here。 因为我确定你会成像,这会通知您订阅的对象的更改。
realm = Realm.getDefaultInstance();
RealmResults<Message> messages = realm.where(Message.class).findAllAsync();
messageChangeListener = new RealmChangeListener() {
@Override
public void onChange() {
// update your dataset
mAdapter.notifyDataSetChanged();
}
};
messages.addChangeListener(messageChangeListener);
答案 1 :(得分:0)
您使用的是什么类型的适配器? 如果这是默认值,您可以尝试使用类似
的内容runOnUiThread(new Runnable() {
@Override
public void run() {
mAdapter.notifyItemChanged(positionOfItemToChange);
}
});