我在如何删除与某些参数不匹配的元素方面遇到了问题。例如,我有两个数据类:第一个和第二个第一个包含第二个的属性,即城市、价格等:
data class Properties(val city: String, val day: Int, val month: Int, val yearProp: Int, val dayEnd: Int, val monthEnd: Int, val yearEndProp: Int, val priceFrom: Int, val priceTo: Int)
Run Code Online (Sandbox Code Playgroud)
Item 的第二个数据类:
data class Product(var title: String, var price: String, var photoId : String)
Run Code Online (Sandbox Code Playgroud)
我正在通过 json 中的此代码解析产品的数据:
val gson = GsonBuilder().setPrettyPrinting().create()
val inputStream : Reader = context.getResources().openRawResource(R.raw.products).reader()
var productList: ArrayList<Product> = gson.fromJson(inputStream, object : TypeToken<List<Product>>() {}.type)
productList.forEach { println(it) }
Run Code Online (Sandbox Code Playgroud)
这是 JSON 文件:
[
{
"city": "New York",
"title": "Banana", …Run Code Online (Sandbox Code Playgroud) 所以,我有Android的这个代码:
parkingList.removeIf { parking-> parking.city != pr.city }
parkingList.removeIf { parking-> parking.price.toDouble() <= pr.priceFrom }
parkingList.removeIf { parking-> parking.price.toDouble() >= pr.priceTo }
parkingList.removeIf { parking-> parking.daysBusy.contains(daysSet.split("|").toString()) }
Run Code Online (Sandbox Code Playgroud)
这是我现在的代码.我不能使用任何其他东西,因为当我使用过滤器到我的arraylist parkingList时,它将无法正常工作.我不知道为什么.这就是我使用它的方式:
parkingList.filter { parking-> parking.city === pr.city }
parkingList.filter { parking-> parking.price.toDouble() >= pr.priceFrom }
parkingList.filter { parking-> parking.price.toDouble() <= pr.priceTo }
parkingList.filter { parking-> !parking.daysBusy.contains(daysSet.split("|").toString()) }
Run Code Online (Sandbox Code Playgroud)
但由于某种原因它不起作用.PS我只需要API19,所以,这就是为什么我必须只使用过滤器(或者没有?)
码:
val filteredList = parkingList.filter { parking-> parking.city === pr.city
parking.price.toDouble() >= pr.priceFrom
parking.price.toDouble() <= pr.priceTo
!parking.daysBusy.contains(daysSet.split("|").toString())
} as ArrayList
filteredList.forEach { println(it) } …Run Code Online (Sandbox Code Playgroud)