首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用next()和next()遍历列表

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

Stack Overflow用户
提问于 2020-08-05 11:59:57
回答 1查看 209关注 0票数 0

我有一个需要以两种方式迭代的列表,我使用了一个迭代器。

代码语言:javascript
复制
teamIterator = data.listIterator()

然后,我使用内置函数next()和前面的迭代。

代码语言:javascript
复制
    fun next() {

    if (teamIterator.hasNext()) {
        selectedTechnician.postValue(teamIterator.next())
    }
}

fun previous() {

    if (teamIterator.hasPrevious()) {
        selectedTechnician.postValue(teamIterator.previous())
    }
}

这种方法的问题是,当在列表开头单击next时,它必须是两次单击,在执行next并想要返回前一次之后,我必须在前次单击两次,这是不好的行为,有什么方法可以避免next()不返回实际项,并且只返回列表中的下一项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-05 16:24:09

迭代器没有当前元素的概念,所以您总是在元素之间,使用上述算法切换方向将导致重复元素。

您可以使用索引变量来跟踪当前的元素索引,这样在切换方向时总是可以强制进行更改。

代码语言:javascript
复制
//Property
var currentIndex = 0

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

fun previous() {
    if (currentIndex > 0) {
        selectedTechnician.postValue(data[--currentIndex])
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63264725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档