Android 从其他线程更新领域模型,但应通知适配器

Android 从其他线程更新领域模型,但应通知适配器,android,multithreading,realm,Android,Multithreading,Realm,我正在用Websocket OnResponse方法将消息从适配器发送到Websocket我正在更新领域模型类,但过程在后台进行,而不是向前: 在这里您可以查看我的代码: 公共静态void updateMsgStatus(字符串userId, 字符串messageId, MSG_状态(msgStatus){ 在这一行中message.setMsgStatus(msgStatus.ordinal());在什么都不做的情况下进入后台,但我在这里等待: 若我在这个方法中创建自己的线程,那个么领域将不会

我正在用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);