使用next()和previous()遍历列表

时间:2020-08-05 11:59:57

标签: android kotlin collections iterator

我有一个列表,需要使用两种方式进行迭代,我使用了迭代器

Log::channel('webhook')->debug($message);

然后我使用内置函数next()和previous进行迭代

teamIterator = data.listIterator()

此方法的问题在于,在列表的开头单击“下一步”时,必须先单击两次,然后在执行“下一步”并想转到上一个之后,我必须在“上一个”上单击两次,这是不好的行为, 有什么方法可以避免next()不返回实际项,而只返回列表中的下一项?

1 个答案:

答案 0 :(得分:0)

迭代器没有 current 元素的概念,因此您总是在元素之间,并且使用上述算法切换方向将导致元素重复。

您可以使用索引变量来跟踪当前元素索引,以便在切换方向时始终可以强制进行更改。

//Property
var currentIndex = 0

fun next() {
    if (currentIndex < data.lastIndex) {
        selectedTechnician.postValue(data[++currentIndex])
    }
}

fun previous() {
    if (currentIndex > 0) {
        selectedTechnician.postValue(data[--currentIndex])
    }
}