【问题标题】:How to get index / position of list in onnext from Observable.fromIterable Rxjava?如何从 Observable.fromIterable Rxjava 获取 onnext 中列表的索引/位置?
【发布时间】:2019-08-14 06:58:37
【问题描述】:

我正在尝试循环一个列表,但我没有得到当前项目的索引。

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 本身是否有它的东西。

【问题讨论】:

  • @Gustavo 我需要的场景和我接受的解决方案与那个问题完全不同

标签: android kotlin rx-java rx-java2


【解决方案1】:

你可以像这样使用Iterable.withIndex()

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

【讨论】:

  • 我不知道这个方法withIndex(),非常感谢!
【解决方案2】:

使用 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);
        });

编辑:

刚刚找到implement这个更通用的方法。

【讨论】:

    猜你喜欢
    • 2020-05-27
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2012-04-15
    相关资源
    最近更新 更多