Android 从其他线程更新领域模型,但应通知适配器
我正在用Websocket OnResponse方法将消息从适配器发送到Websocket我正在更新领域模型类,但过程在后台进行,而不是向前: 在这里您可以查看我的代码: 公共静态void updateMsgStatus(字符串userId, 字符串messageId, MSG_状态(msgStatus){ 在这一行中message.setMsgStatus(msgStatus.ordinal());在什么都不做的情况下进入后台,但我在这里等待: 若我在这个方法中创建自己的线程,那个么领域将不会通知适配器Android 从其他线程更新领域模型,但应通知适配器,android,multithreading,realm,Android,Multithreading,Realm,我正在用Websocket OnResponse方法将消息从适配器发送到Websocket我正在更新领域模型类,但过程在后台进行,而不是向前: 在这里您可以查看我的代码: 公共静态void updateMsgStatus(字符串userId, 字符串messageId, MSG_状态(msgStatus){ 在这一行中message.setMsgStatus(msgStatus.ordinal());在什么都不做的情况下进入后台,但我在这里等待: 若我在这个方法中创建自己的线程,那个么领域将不会
提前感谢:)您使用的是哪种适配器? 如果这是默认值,您可以尝试使用以下命令
runOnUiThread(new Runnable() {
@Override
public void run() {
mAdapter.notifyItemChanged(positionOfItemToChange);
}
});
您可以在绑定/呈现数据的领域实例Docs上使用更改侦听器。 我相信您会看到,这会通知您已订阅的对象的更改
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);
realm=realm.getDefaultInstance();
RealmResults messages=realm.where(Message.class.findalsync();
messageChangeListener=新的RealmChangeListener(){
@凌驾
更改后的公共无效(){
//更新数据集
mAdapter.notifyDataSetChanged();
}
};
messages.addChangeListener(messageChangeListener);
但消息来自后台,因此我在这里没有此方法中的活动,我使用的是此RealMBaseAdapter。您可以使用上下文对象运行此范围。例如,您可以将上下文实例作为参数传递给一个类,在该类中,您尝试更新消息,并像这样使用它:context。runOnUiThread@pradeepbishnoi没问题:)认罪为此,请使用用户RealmChangeListener()。
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);