如何从 Observable.fromIterable Rxjava 获取列表在 onnext 中的索引/位置?

How to get index / position of list in onnext from Observable.fromIterable Rxjava?

我正在尝试循环列表,但没有获取当前项目的索引。

Observable.fromIterable(yourList).observeOn(Schedulers.io())
            .observeOn(Schedulers.io()).subscribe(
                { item -> {        }},
                {_ ->{}},
                {->{}}

有没有办法像

一样获取索引
yourList.forEachIndexed{ index, item -> }

我已经知道

class Indexed {
int index;
String element;

Indexed(int index, String element) {
    this.index = index;
    this.element = element;
    }
}

这个可以作为解决方案。但我不喜欢这种方法。我想知道 Rxjava 本身是否有它的东西。

您可以这样使用 Iterable.withIndex()

Observable.fromIterable(yourList.withIndex())
    .observeOn(Schedulers.io())
    .subscribe(
        { (index, item) -> {} },
        { _ -> {} },
        { -> {} }
    )

使用 Java 您可以通过创建索引元素并将所有列表项映射到索引项来解决该问题。如果你有 String 列表,那么你可以这样做:

class Indexed {
    int index;
    String element;

    Indexed(int index, String element) {
        this.index = index;
        this.element = element;
    }
}

然后使用

List<String> stringList = Arrays.asList("one", "two", "three", "four", "five");

Observable.fromIterable(stringList)
        .map(s -> new Indexed(stringList.indexOf(s), s))
        .subscribe(indexed -> {
            Log.i("TAG", "index: " + indexed.index + ", element: " + indexed.element);
        });

编辑:

刚刚找到了一种更通用的方法