我有 Map of items 我想听变化并做一些 Action 我想在单独的线程中完成,但 map 已更改但我可以听到它的更改
val removedItemList: HashMap<Int,Item> = HashMap()
Flowable.fromArray(removedShoppingList.values).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ items ->
Log.i("items_removed", " " + items + items.size);
})
最佳答案
请尝试以下代码:
// When HashMap changed, this class emitted.
class MapEvent(val event: EventType, val item: Item?){
enum class EventType {
ADD,
REMOVE
}
}
~~~
// PublishSubject emits changed event.
val subject = PublishSubject.create<MapEvent>()
// Subscribe changed event.
// When emits changed event by PublishSubject, print log.
val obervable = subject.hide().share()
obervable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe {it -> Log.i("HashMap Changed", "Event: ${it.event}, Item: ${it.item}")}
val itemList: HashMap<Int, Item> = HashMap()
val addedItem = Item()
// If you add or remove HashMap item, then execute onNext method in order to emit changed event.
itemList.put(1, addedItem)
subject.onNext(MapEvent(MapEvent.EventType.ADD, addedItem))
val removedItem = itemList.remove(1)
subject.onNext(MapEvent(MapEvent.EventType.REMOVE, removedItem))
关于android - 如何在单独的线程中监听 HashMap 值的变化使其可流动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580705/