我正在嘗試使用RecyclerView. 為此,我有一個ArrayList自定義資料型別。我想ArrayList按降序對資料進行排序,使用ArrayList. 我熟悉已經可用的方法(sortWith、sortBy、sortByDescending等),但不幸的是,它們都從ArrayList變為List,這會阻止回收器視圖作業。理想情況下,我想保留 ,ArrayList因為我需要它用于我稍后在專案中執行的其他流程。
我正在努力實作的目標:
輸入: arrayListName = ArrayList<CustomType>
程序:[按降序排序arrayListName.firstName]
輸出: return ArrayList<CustomType>
我試過將List(如下所示)轉換為ArrayList,但這會引發以下錯誤:
java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
拋出錯誤的代碼行(我嘗試了各種方法,但它們都在該行拋出例外):
val sortedModel = model.sortedWith(compareBy { it.name}) as ArrayList<Model>
任何幫助表示贊賞(:
我對 java 解決方案也很滿意,因為我理解它并且可以輕松地從 java 實作到 kotlin。
uj5u.com熱心網友回復:
您不能直接將 a 轉換List為 an ArrayList。如果要將 a 轉換List為ArrayList,可以這樣做:
val sortedModel = model.sortedByDescending { it.name }.toCollection(ArrayList())
uj5u.com熱心網友回復:
這會幫助你
val list = arrayList.sortedByDescending { it.firstName.length }
result.addAll(list)
完整代碼:
val arrayList: ArrayList<CustomType> = arrayListOf()
val result: ArrayList<CustomType> = arrayListOf()
arrayList.add(CustomType("Aadddd"))
arrayList.add(CustomType("Ccd"))
arrayList.add(CustomType("Bbdd"))
arrayList.add(CustomType("Ffddd"))
arrayList.add(CustomType("Dd"))
val list = arrayList.sortedByDescending { it.firstName.length }
result.addAll(list)
輸出:
SORT [{"firstName":"Aadddd"},{"firstName":"Ffddd"},{"firstName":"Bbdd"},{"firstName":"Ccd"},{"firstName":"Dd"}]
uj5u.com熱心網友回復:
使用sortWith,而不是它就地,試試這個
data class A(
val x : Int
)
fun main(args: Array<String>) {
var a = arrayListOf( A(1) ,A(2) ,A(3) ,A(4) )
a.sortWith(compareByDescending { it.x })
assert( a is ArrayList )
println(a)
}
試試自己
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/372536.html
