Uploaded image for project: 'Titanium SDK/CLI'
  1. Titanium SDK/CLI
  2. TIMOB-13370

Android: TableView crashes with ConcurrentModificationException when firing scrollend event

    Details

      Description

      Description

      The following code will make the app crash after scrolling all the way to the bottom and back up. Sometimes it crashes earlier. Another thing that happens is a JS error pops up as shown in this image:
      http://f.cl.ly/items/3e3i103A0W0y3S3Z3S1B/image001.png

      All this happened after the fix for bug TIMOB-13055

      var win = Ti.UI.createWindow({
          backgroundColor: '#ffffff'
      });
       
      var tableData = [];
      var x = 0;
      for(var i = 0; i < 10; i++) {
          // Create 10 sections
          var section = Ti.UI.createTableViewSection({
              font: {
                  fontSize: '14dp'
              },
              headerTitle: 'Pretty Section #' + (i+1),
              color: 'white'
          });
          // Create 10 rows and add them to the section
          for(var o = 0; o < 10; o++) {
              var avatar = Ti.UI.createImageView({
                  image: 'KS_nav_ui.png',
                  width: '64dp',
                  height: '64dp',
                  left: '0dp',
                  top: '0dp'
              });
              x++;
              var title = Ti.UI.createLabel({
                  left: '70dp',
                  top: '5dp',
                  height: Ti.UI.SIZE,
                  font: {
                      fontSize: '18dp'
                  },
                  color: 'black',
                  text: 'Row number is ' + (o+1)
              });
              var subtitle = Ti.UI.createLabel({
                  left: '70dp',
                  top: '30dp',
                  height: Ti.UI.SIZE,
                  font: {
                      fontSize: '14dp'
                  },
                  color: 'black',
                  text: 'Section is ' + (i+1)
              });
              var row = Ti.UI.createTableViewRow({
                  height: '64dp',
                  className: 'choppy_tableview'
              });
              row.add(avatar);
              row.add(title);
              row.add(subtitle);
              section.add(row);
          }
          tableData.push(section);
      }
      // Create the table view
      var table = Ti.UI.createTableView({
          data: tableData
      });
       
      table.addEventListener('click', function(){
      	
      });
       
      table.addEventListener('scroll', function(){
      	
      });
       
       
      win.add(table);
       
      win.open();
      

      Stack trace:

      04-04 14:09:03.784: E/TiApplication(10959): (main) [11968,11968] Sending event: exception on thread: main msg:java.util.ConcurrentModificationException; Titanium 3.1.0,2013/04/02 15:41,1b76dea
      04-04 14:09:03.784: E/TiApplication(10959): java.util.ConcurrentModificationException
      04-04 14:09:03.784: E/TiApplication(10959):          at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796)
      04-04 14:09:03.784: E/TiApplication(10959):          at java.util.HashMap$EntryIterator.next(HashMap.java:833)
      04-04 14:09:03.784: E/TiApplication(10959):          at java.util.HashMap$EntryIterator.next(HashMap.java:831)
      04-04 14:09:03.784: E/TiApplication(10959):          at java.util.HashMap.constructorPutAll(HashMap.java:209)
      04-04 14:09:03.784: E/TiApplication(10959):          at java.util.HashMap.<init>(HashMap.java:200)
      04-04 14:09:03.784: E/TiApplication(10959):          at org.appcelerator.kroll.KrollDict.<init>(KrollDict.java:79)
      04-04 14:09:03.784: E/TiApplication(10959):          at ti.modules.titanium.ui.TableViewProxy.fireEvent(TableViewProxy.java:156)
      04-04 14:09:03.784: E/TiApplication(10959):          at org.appcelerator.titanium.proxy.TiViewProxy.fireEvent(TiViewProxy.java:818)
      04-04 14:09:03.784: E/TiApplication(10959):          at ti.modules.titanium.ui.widget.tableview.TiTableView$1.onScrollStateChanged(TiTableView.java:306)
      04-04 14:09:03.784: E/TiApplication(10959):          at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:3253)
      04-04 14:09:03.784: E/TiApplication(10959):          at android.widget.AbsListView$TwFlingRunnable.endFling(AbsListView.java:3323)
      04-04 14:09:03.784: E/TiApplication(10959):          at android.widget.AbsListView$TwFlingRunnable.run(AbsListView.java:3392)
      04-04 14:09:03.784: E/TiApplication(10959):          at android.os.Handler.handleCallback(Handler.java:587)
      04-04 14:09:03.784: E/TiApplication(10959):          at android.os.Handler.dispatchMessage(Handler.java:92)
      04-04 14:09:03.784: E/TiApplication(10959):          at android.os.Looper.loop(Looper.java:130)
      04-04 14:09:03.784: E/TiApplication(10959):          at android.app.ActivityThread.main(ActivityThread.java:3691)
      04-04 14:09:03.784: E/TiApplication(10959):          at java.lang.reflect.Method.invokeNative(Native Method)
      04-04 14:09:03.784: E/TiApplication(10959):          at java.lang.reflect.Method.invoke(Method.java:507)
      04-04 14:09:03.784: E/TiApplication(10959):          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
      04-04 14:09:03.784: E/TiApplication(10959):          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
      04-04 14:09:03.784: E/TiApplication(10959):          at dalvik.system.NativeStart.main(Native Method)
      04-04 14:09:03.854: E/(134): Dumpstate > /data/log/dumpstate_app_error
      04-04 14:09:03.854: E/AndroidRuntime(10959): FATAL EXCEPTION: main
      04-04 14:09:03.854: E/AndroidRuntime(10959): java.util.ConcurrentModificationException
      04-04 14:09:03.854: E/AndroidRuntime(10959): at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at java.util.HashMap$EntryIterator.next(HashMap.java:833)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at java.util.HashMap$EntryIterator.next(HashMap.java:831)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at java.util.HashMap.constructorPutAll(HashMap.java:209)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at java.util.HashMap.<init>(HashMap.java:200)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at org.appcelerator.kroll.KrollDict.<init>(KrollDict.java:79)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at ti.modules.titanium.ui.TableViewProxy.fireEvent(TableViewProxy.java:156)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at org.appcelerator.titanium.proxy.TiViewProxy.fireEvent(TiViewProxy.java:818)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at ti.modules.titanium.ui.widget.tableview.TiTableView$1.onScrollStateChanged(TiTableView.java:306)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at android.widget.AbsListView.reportScrollStateChange(AbsListView.java:3253)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at android.widget.AbsListView$TwFlingRunnable.endFling(AbsListView.java:3323)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at android.widget.AbsListView$TwFlingRunnable.run(AbsListView.java:3392)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at android.os.Handler.handleCallback(Handler.java:587)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at android.os.Handler.dispatchMessage(Handler.java:92)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at android.os.Looper.loop(Looper.java:130)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at android.app.ActivityThread.main(ActivityThread.java:3691)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at java.lang.reflect.Method.invokeNative(Native Method)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at java.lang.reflect.Method.invoke(Method.java:507)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
      04-04 14:09:03.854: E/AndroidRuntime(10959): at dalvik.system.NativeStart.main(Native Method)
      

        Attachments

          Activity

            People

            • Assignee:
              hpham Hieu Pham
              Reporter:
              penrique Pedro Enrique (Inactive)
            • Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Backbone Issue Sync

                • Titanium SDK/CLI <> Titanium Mobile
                  Synced with:
                  TIMOB-16125
                  Sync status:
                  ERROR
                  Last received:
                  Last sent:

                  Git Source Code