[英]Emit single item while update UI about progress in RxJava / RxAndroid
[英]Update single list item RXJava
我基本上想将此for循环转换为Observable
private static List<Book> books
public static void replaceBook(Book book) {
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getId().equals(book.getId())) {
books.set(i, book);
}
}
}
到目前为止,这是我所拥有的,但是没有用。 我以为地图操作员会更新过滤后的项目,但似乎丢失了一些东西。
Observable.from(books).filter(new Func1<Book, Boolean>() {
@Override
public Boolean call(Book b) {
return b.getId().equals(book.getId());
}
}).map(new Func1<Book, Book>() {
@Override
public Book call(Book b) {
return book;
}
}).subscribe();
更新
根据鲍里斯和塔索斯的答案,我得到了以下似乎有效的答案
Observable.from(books)
.map(b -> b.getId().equals(book.getId()) ? book : b)
.toList()
.subscribe(s -> books = s);
Observable
.from(books)
.map(new Func1<Book, Book>() {
@Override
public Book call(Book b) {
if (book.getId().equals(b.getId()))
return book;
return b;
}
})
.toList()
.subscribe();
Observable
.from(books)
.map(b -> b.getId().equals(book.getId()) ? book : b)
.subscribe();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.