while ループを Stream に置き換えようとしましたが、Stream バージョンを使用すると、最後の要素が常に欠落しています。欠落している理由は理解していると思いますが、これを修正する方法がわかりません。提案はありますか?また、これを行うより良い方法はありますか?ありがとう
ストリームの使用:
if(cursor.moveToFirst) {
val result = Stream.continually((
Song(
cursor.getLong(c(BaseColumns._ID)),
cursor.getString(c(MediaColumns.TITLE))
),
cursor.moveToNext))
.takeWhile(_._2)
.map(_._1)
result.toList
}
ここでは while ループ バージョンが正常に動作します。
cursor.moveToFirst()
var i = 0
var list: List[Song] = List.empty
while (i < cursor.getCount()) {
val s = Song(
cursor.getLong(c(BaseColumns._ID)),
cursor.getString(c(MediaColumns.TITLE)))
i = i + 1
list = list :+ s
cursor.moveToNext()
ノート:
次へ移動
カーソルを次の行に移動します。カーソルが結果セットの最後のエントリをすでに通過している場合、このメソッドは false を返します。