nativescript-community / ui-collectionview

Allows you to easily add a collection view (grid list view) to your projects. Supports vertical and horizontal modes, templating, and more.
Apache License 2.0
59 stars 18 forks source link

Android error when deleting and adding items #74

Closed vallemar closed 11 months ago

vallemar commented 11 months ago

When I remove items and add them to my observableArray, there are times I get this error. I don't know why it happens, since there are times I can't reproduce it and other times I can.

[Vue warn]: Unhandled error during execution of native event handler
    at <CollectionView ref="collectionViewRef" height="100%" items= [
    {
      "id": "898c27ab-3114-4ccc-a3b4-98bbe49aec8c",
      "title": "Meditation",
      "periodicity": 0,
      "color": "#7f73eb",
      "icon": "🧘",
      "week": [
        {
          "date": "2023-11-01",
          "value": 4
        },
        {
          "date": "2023-11-02",
          "value": 3
        },
        {
          "date": "2023-11-03",
          "value": 4
        },
        {
          "date": "2023-11-04",
          "value": 5
        },
        {
          "date": "2023-11-05",
          "value": 4
        }
      ],
      "normalizedWeek": [
        {
          "date": "2023-11-01",
          "value": 17
        },
        {
          "date": "2023-11-02",
          "value": 14
        },
        {
          "date": "2023-11-03",
          "value": 17
        },
        {
          "date": "2023-11-04",
          "value": 20
        },
        {
          "date": "2023-11-05",
          "value": 17
        }
      ],
      "index...
  System.err: An uncaught Exception occurred on "main" thread.
  System.err: Calling js method onBindViewHolder failed
  System.err: TypeError: Cannot read properties of undefined (reading 'startingSide')
  System.err:
  System.err: StackTrace:
  System.err: (file: src/webpack:/nativescript-reordering/src/views/Home.vue:173:38)
  System.err:   at renderFnWithContext(file: src/webpack:/nativescript-reordering/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js:771:0)
  System.err:   at onItemLoading(file: src/webpack:/nativescript-reordering/node_modules/@nativescript-community/ui-collectionview/vue3/component.js:65:0)
  System.err:   at callWithErrorHandling(file: src/webpack:/nativescript-reordering/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js:158:0)
  System.err:   at callWithAsyncErrorHandling(file: src/webpack:/nativescript-reordering/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js:166:0)
  System.err:   at invoker(file: src/webpack:/nativescript-reordering/node_modules/nativescript-vue/dist/renderer/modules/events.js:54:34)
  System.err:   at _handleEvent(file: src/webpack:/nativescript-reordering/node_modules/@akylas/nativescript/data/observable/index.js:304:0)
  System.err:   at notify(file: src/webpack:/nativescript-reordering/node_modules/@akylas/nativescript/data/observable/index.js:285:0)
  System.err:   at notifyForItemAtIndex(file: src/webpack:/nativescript-reordering/node_modules/@nativescript-community/ui-collectionview/index.android.js:1037:0)
  System.err:   at onBindViewHolder(file: src/webpack:/nativescript-reordering/node_modules/@nativescript-community/ui-collectionview/index.android.js:1054:0)
  System.err:   at com.tns.Runtime.callJSMethodNative(Native Method)
  System.err:   at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1301)
  System.err:   at com.tns.Runtime.callJSMethodImpl(Runtime.java:1187)
  System.err:   at com.tns.Runtime.callJSMethod(Runtime.java:1174)
  System.err:   at com.tns.Runtime.callJSMethod(Runtime.java:1152)
  System.err:   at com.tns.Runtime.callJSMethod(Runtime.java:1148)
  System.err:   at com.tns.gen.com.nativescript.collectionview.AdapterInterface.onBindViewHolder(AdapterInterface.java:34)
  System.err:   at com.nativescript.collectionview.Adapter.onBindViewHolder(Adapter.java:38)
  System.err:   at com.nativescript.collectionview.Adapter.onBindViewHolder(Adapter.java:11)
  System.err:   at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7678)
  System.err:   at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7761)
  System.err:   at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6582)
  System.err:   at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6848)
  System.err:   at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6688)
  System.err:   at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6684)
  System.err:   at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2362)
  System.err:   at androidx.recyclerview.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:584)
  System.err:   at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1622)
  System.err:   at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:687)
  System.err:   at androidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:182)
  System.err:   at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4604)
  System.err:   at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4307)
  System.err:   at androidx.recyclerview.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:2065)
  System.err:   at androidx.recyclerview.widget.RecyclerView$1.run(RecyclerView.java:438)
  System.err:   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1231)
  System.err:   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
  System.err:   at android.view.Choreographer.doCallbacks(Choreographer.java:899)
  System.err:   at android.view.Choreographer.doFrame(Choreographer.java:827)
  System.err:   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
  System.err:   at android.os.Handler.handleCallback(Handler.java:942)
  System.err:   at android.os.Handler.dispatchMessage(Handler.java:99)
  System.err:   at android.os.Looper.loopOnce(Looper.java:201)
  System.err:   at android.os.Looper.loop(Looper.java:288)
  System.err:   at android.app.ActivityThread.main(ActivityThread.java:7872)
  System.err:   at java.lang.reflect.Method.invoke(Native Method)
  System.err:   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
  System.err:   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Repo(branch: add-remove-habit): https://github.com/vallemar/nativescript-reordering/tree/add-remove-habit

https://github.com/nativescript-community/ui-collectionview/assets/15719383/e0f44efd-f39b-45dc-9838-fa877f3972af

Note: can't find startingSide because I think item is undefined

I understand that this is an error in the android implementation since in iOS I do not have any similar error

vallemar commented 11 months ago

I think it was a strange error in my code, if I still don't see it tomorrow I will close this issue

vallemar commented 11 months ago

It was a mistake for me. I close this Issue!