【发布时间】:2022-01-01 11:10:48
【问题描述】:
我有一个Drink 对象,它有一个名为strength 的属性。强度是一个整数,值为 0,1,2 或 3。
现在在我的项目中,我在列表视图中显示所有 Drink 对象。在列表视图的顶部,有一个过滤部分供用户根据强度过滤Drink 对象。这些是复选框,这意味着用户可以选择最少 1 个或最多 4 个过滤器。这将作为 Int 数组保存到 SharedPreferences。
data class Drink(val theDrinkName:String, val strength:Int)
object DrinkData {
const val low = 0
const val medium = 1
const val strong = 2
const val intense = 3
fun generateAllDrinks():Array<Drink> {
return arrayOf(
Drink("Vodka", medium),
Drink("Shirley Temple", low),
Drink("rum", strong),
Drink("Gin", medium),
Drink("151", intense),
Drink("99", strong)
)
}
}
这是我生成所有数据的方式:
val allDrinks = DrinkData.generateAllDrinks().sortedWith(
compareBy<Drink> { it.theDrinkName.first().isDigit() }
.thenBy { it.theDrinkName.toLowerCase() }
)
我需要能够根据 Int 数组过滤此数据的强度属性。(Int 数组是保存到 SharedPreferences 的内容。)
val filteredStrengthArray = arrayListOf<Int>(2,3)
这会将allDrinks 过滤为朗姆酒、151、99。
我的进步:
这是我实现此过滤的壁橱。
val allDrinks = DrinkData.generateAllDrinks().sortedWith(
compareBy<Drink> { it.theDrinkName.first().isDigit() }
.thenBy { it.theDrinkName.toLowerCase() }
).filter { it.strength == 2 || it.strength == 3 }
问题是我需要通过 Int 数组进行过滤以对齐 SharedPreferences 中保存的内容。
如何通过提供 Int 数组来过滤此数据的强度属性?
【问题讨论】:
标签: android arrays kotlin arraylist filtering