Repository navigation
Crash when scrolling favorites to the bottom #17172
Copy link
Copy link
Closed
Labels
Description
⚠️ Before posting ⚠️
- This is a bug, not a question or an enhancement.
- I've searched for similar issues and didn't find a duplicate.
- I've written a clear and descriptive title for this issue, not just "Bug" or "Crash".
- I agree to follow Nextcloud's Code of Conduct.
Steps to reproduce
- Open the app (I'm already logged in, so log in if needed)
- Tap Favorites.
- Scroll down.
- It will crash after 2-3 seconds.
Expected behaviour
It should not crash.
Actual behaviour
It shows the files, but crashes after scrolling to the bottom.
Android version
16
Device brand and model
Pixel 7a
Stock or custom OS?
Stock
Nextcloud android app version
34.0.0
Nextcloud server version
33.0.5
Using a reverse proxy?
No
Android logs
No response
Server error logs
Additional information
Here's the stack trace, my 2 cents is that there's a listOf() that should be a mutableListOf() somewhere, so it used EmptyList instead of MutableList and blew up.
Cause of error
Exception in thread "main" java.lang.UnsupportedOperationException: Operation is not supported for read-only collection
at kotlin.collections.EmptyList.add(Unknown Source:4)
at com.owncloud.android.ui.adapter.OCFileListAdapter.bindListItemViewHolder(OCFileListAdapter.java:610)
at com.owncloud.android.ui.adapter.OCFileListAdapter.bindHolder(OCFileListAdapter.java:502)
at com.owncloud.android.ui.adapter.OCFileListAdapter.onBindViewHolder(OCFileListAdapter.java:490)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7747)
at com.owncloud.android.ui.adapter.OCFileListAdapter.onBindViewHolder(OCFileListAdapter.java:1089)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7847)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6646)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6917)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6757)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6753)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2362)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1662)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1622)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:687)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4645)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4348)
at androidx.recyclerview.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:2076)
at androidx.recyclerview.widget.RecyclerView.scrollByInternal(RecyclerView.java:2145)
at androidx.recyclerview.widget.RecyclerView.onTouchEvent(RecyclerView.java:3867)
at android.view.View.performOnTouchCallback(View.java:16906)
at android.view.View.dispatchTouchEvent(View.java:16859)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3137)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2811)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2826)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:503)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:2017)
at android.app.Activity.dispatchTouchEvent(Activity.java:4666)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:441)
at android.view.View.dispatchPointerEvent(View.java:17196)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:8585)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:8335)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7702)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7759)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7725)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7896)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7733)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7953)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7706)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7759)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7725)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7733)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7706)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:11033)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:10973)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:10941)
at android.view.ViewRootImpl.processRawInputEvent(ViewRootImpl.java:11377)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:11161)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:284)
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:260)
at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:11132)
at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:11226)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1647)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1656)
at android.view.Choreographer.doCallbacks(Choreographer.java:1252)
at android.view.Choreographer.doFrame(Choreographer.java:1174)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1630)
at android.os.Handler.handleCallback(Handler.java:1095)
at android.os.Handler.dispatchMessageImpl(Handler.java:135)
at android.os.Handler.dispatchMessage(Handler.java:125)
at android.os.Looper.loopOnce(Looper.java:269)
at android.os.Looper.loop(Looper.java:367)
at android.app.ActivityThread.main(ActivityThread.java:9333)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:566)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)App information
- ID:
com.nextcloud.client - Version:
340000090 - Build flavor:
gplay
Device information
- Brand:
google - Device:
lynx - Model:
Pixel 7a - Id:
CP1A.260505.005 - Product:
lynx
Firmware
- SDK:
36 - Release:
16 - Incremental:
15081906
Reactions are currently unavailable
Activity
Tighbu commentedon Jun 13, 2026
Same error experienced on a Motorola Edge 50 Neo. Only 1 item in favourites, so app crashes as soon as favourites tab is selected
Zenon1991 commentedon Jun 16, 2026
Can confirm that error on another Google Pixel 7 device:
App information
Device information
Firmware
alperozturk96 commentedon Jun 16, 2026
fixed via #17152