Closed wxw-9527 closed 10 months ago
listOf
创建的是 java.util.Collections.singletonList(element)
SingletonList<>
根据官方注释如下:
Returns an immutable list containing only the specified object. The returned list is serializable.
这是一个不可变化的列表,所以操作的时候,会抛出 UnsupportedOperationException
异常。
如果你已经确定了列表数据的不可变化特性,那么用 listOf
没有问题,操作数据抛出异常是对开发者的一种强制警告,符合设计逻辑。
如果你的列表数据是可以变化的,你应该使用 arrayListOf
。
开发者应自己确定数据列表是否可变,并显示的使用不同 list 类型
如题,数据源为List类型时,直接调用add方法添加新数据,程序报异常 FATAL EXCEPTION: main Process: com.chad.baserecyclerviewadapterhelper, PID: 6013 java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:161) at com.chad.library.adapter4.BaseQuickAdapter.removeAt(BaseQuickAdapter.kt:634) at com.chad.baserecyclerviewadapterhelper.activity.itemclick.ItemClickActivity.onCreate$lambda$6(ItemClickActivity.kt:69) at com.chad.baserecyclerviewadapterhelper.activity.itemclick.ItemClickActivity.$r8$lambda$N5IZmXMy-dmWH7oJn-Jo3dOV9ho(Unknown Source:0) at com.chad.baserecyclerviewadapterhelper.activity.itemclick.ItemClickActivity$$ExternalSyntheticLambda6.onItemClick(Unknown Source:0) at com.chad.library.adapter4.BaseQuickAdapter.onItemChildClick(BaseQuickAdapter.kt:394) at com.chad.library.adapter4.BaseQuickAdapter.bindViewClickListener$lambda$10$lambda$9$lambda$8(BaseQuickAdapter.kt:346) at com.chad.library.adapter4.BaseQuickAdapter.$r8$lambda$ccaijNo-c5lRG10m3T_rMqaIOnE(Unknown Source:0) at com.chad.library.adapter4.BaseQuickAdapter$$ExternalSyntheticLambda2.onClick(Unknown Source:4) at android.view.View.performClick(View.java:7380) at android.view.View.performClickInternal(View.java:7342) at android.view.View.access$3900(View.java:824) at android.view.View$PerformClick.run(View.java:28262) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:238) at android.app.ActivityThread.main(ActivityThread.java:7827) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
复现方法: ItemClickActivity中,将数据源改为以下代码:
调用add方法添加数据可复现