{ "id": "171831", "key": "TIMOB-26155", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "20238", "description": "", "name": "Release 7.5.0", "archived": false, "released": true, "releaseDate": "2018-11-15" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2018-07-03T16:38:30.000+0000", "created": "2018-06-22T20:24:20.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "defect" ], "versions": [ { "id": "20099", "name": "Release 7.2.0", "archived": false, "released": true, "releaseDate": "2018-06-14" } ], "issuelinks": [], "assignee": { "name": "gmathews", "key": "gmathews", "displayName": "Gary Mathews", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2018-09-20T14:11:29.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "I am attempting to use ListView to hold a series of Switch + Labels for a question and answer app. When the user selects one answer (either by clicking the switch or clicking the label), I am setting all other Switches to false so that only one answer can be selected.\r\n\r\nBelow is the minimum code to reproduce the issue. What you will see is if the user does not click any Switches / Labels and just clicks the button, the first set of answers is replaced by the second set of answers without any issue. If the user clicks a Switch / Label, which causes updateItemAt() to be used on each row, then when the button is pressed to replace the answers shown, an error occurs.\r\n\r\n----\r\n\r\n{code:xml}\r\n\r\n\r\n\t\r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\r\n\r\n{code}\r\n\r\n----\r\n\r\n{code:javascript}\r\n// Arguments passed into this controller can be accessed via the `$.args` object directly or:\r\nvar args = $.args;\r\nvar giSelAns = null;\r\n\r\nfunction clickAns(e) {\r\n\tgiSelAns = e.itemIndex;\r\n\r\n\tfor (var iCnt = 0; iCnt < $.answerSec.items.length; iCnt++) {\r\n\t\tvar item = $.answerSec.getItemAt(iCnt);\r\n\t\tif (iCnt == giSelAns)\r\n\t\t\titem.ansCheck.value = true;\r\n\t\telse\r\n\t\t\titem.ansCheck.value = false;\r\n\t\t$.answerSec.updateItemAt(iCnt, item);\r\n\t}\r\n}\r\n\r\nfunction clickSubmitBtn() {\r\n\t// Skipping code to check correct, answer, etc.\r\n\tanswers = [\r\n\t\t{ ansLabel: { text: \"Second Answer 1\" }, ansCheck: { isCorrect: false } },\r\n\t\t{ ansLabel: { text: \"Second Answer 2\" }, ansCheck: { isCorrect: true } },\r\n\t\t{ ansLabel: { text: \"Second Answer 3\" }, ansCheck: { isCorrect: false } },\r\n\t];\r\n\t$.answerSec.setItems(answers);\t\r\n}\r\n\r\n$.questWin.addEventListener(\"open\", function() {\r\n\tanswers = [\r\n\t\t{ ansLabel: { text: \"First Answer 1\" }, ansCheck: { isCorrect: true } },\r\n\t\t{ ansLabel: { text: \"First Answer 2\" }, ansCheck: { isCorrect: false } },\r\n\t\t{ ansLabel: { text: \"First Answer 3\" }, ansCheck: { isCorrect: false } },\r\n\t];\r\n\t$.answerSec.setItems(answers);\r\n});\r\n\r\n$.questWin.addEventListener(\"close\", function(){\r\n $.destroy();\r\n});\r\n\r\n$.questWin.open();\r\n{code}\r\n\r\n----\r\n\r\n{noformat}\r\n[INFO] : ViewRootImpl: finishMotionEvent: handled = true stage=10: View Post IME stage,inputElapseTime=1 eventTime = 23749878 downTime = 23749878 title= edu.bju.logia/org.appcelerator.titanium.TiActivity\r\n[ERROR] : TiApplication: (main) [11565,11565] Sending event: exception on thread: main msg:java.lang.IllegalArgumentException: Unable to convert null to boolean.; Titanium 7.2.0,2018/06/07 05:21,undefined\r\n[ERROR] : TiApplication: java.lang.IllegalArgumentException: Unable to convert null to boolean.\r\n[ERROR] : TiApplication: at org.appcelerator.titanium.util.TiConvert.toBoolean(TiConvert.java:360)\r\n[ERROR] : TiApplication: at org.appcelerator.titanium.util.TiConvert.toBoolean(TiConvert.java:390)\r\n[ERROR] : TiApplication: at ti.modules.titanium.ui.widget.TiUISwitch.processProperties(TiUISwitch.java:53)\r\n[ERROR] : TiApplication: at ti.modules.titanium.ui.widget.listview.ListSectionProxy.populateViews(ListSectionProxy.java:891)\r\n[ERROR] : TiApplication: at ti.modules.titanium.ui.widget.listview.TiListView$TiBaseAdapter.getView(TiListView.java:276)\r\n[ERROR] : TiApplication: at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)\r\n[ERROR] : TiApplication: at android.widget.AbsListView.obtainView(AbsListView.java:2405)\r\n[ERROR] : TiApplication: at android.widget.ListView.makeAndAddView(ListView.java:1909)\r\n[ERROR] : TiApplication: at android.widget.ListView.fillDown(ListView.java:723)\r\n[ERROR] : TiApplication: at android.widget.ListView.fillSpecific(ListView.java:1388)\r\n[ERROR] : TiApplication: at android.widget.ListView.layoutChildren(ListView.java:1690)\r\n[ERROR] : TiApplication: at android.widget.AbsListView.onLayout(AbsListView.java:2201)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:610)\r\n[ERROR] : TiApplication: at ti.modules.titanium.ui.widget.listview.TiListView$ListViewWrapper.onLayout(TiListView.java:157)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:853)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:853)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:853)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:853)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)\r\n[ERROR] : TiApplication: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at android.support.v7.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:443)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)\r\n[ERROR] : TiApplication: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)\r\n[ERROR] : TiApplication: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)\r\n[ERROR] : TiApplication: at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)\r\n[ERROR] : TiApplication: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)\r\n[ERROR] : TiApplication: at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2720)\r\n[ERROR] : TiApplication: at android.view.View.layout(View.java:16833)\r\n[ERROR] : TiApplication: at android.view.ViewGroup.layout(ViewGroup.java:5438)\r\n[ERROR] : TiApplication: at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2474)\r\n[ERROR] : TiApplication: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2131)\r\n[ERROR] : TiApplication: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1233)\r\n[ERROR] : TiApplication: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6560)\r\n[ERROR] : TiApplication: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:919)\r\n[ERROR] : TiApplication: at android.view.Choreographer.doCallbacks(Choreographer.java:710)\r\n[ERROR] : TiApplication: at android.view.Choreographer.doFrame(Choreographer.java:645)\r\n[ERROR] : TiApplication: at a\r\n[INFO] : Process: Sending signal. PID: 25349 SIG: 9\r\n[LiveView] Client disconnected\r\n[LiveView] Client connected\r\n{noformat}\r\n", "attachment": [], "flagged": false, "summary": "Android: ListView setItems causes error after updateItemAt used with custom template", "creator": { "name": "rkenny", "key": "rkenny", "displayName": "Russell Kenny ", "active": true, "timeZone": "America/New_York" }, "subtasks": [], "reporter": { "name": "rkenny", "key": "rkenny", "displayName": "Russell Kenny ", "active": true, "timeZone": "America/New_York" }, "environment": "{noformat}\r\nOperating System\r\n Name = Mac OS X\r\n Version = 10.12.6\r\n Architecture = 64bit\r\n # CPUs = 4\r\n Memory = 16.0GB\r\n\r\nNode.js\r\n Node.js Version = 8.11.2\r\n npm Version = 6.1.0\r\n\r\nAppcelerator CLI\r\n Installer = 4.2.13\r\n Core Package = 7.0.4\r\n\r\nTitanium CLI\r\n CLI Version = 5.1.1\r\n node-appc Version = 0.2.44\r\n\r\nTitanium SDKs\r\n 7.2.0.GA\r\n\r\nJava Development Kit\r\n Version = 1.8.0_131\r\n{noformat}", "comment": { "comments": [ { "id": "438942", "author": { "name": "gmathews", "key": "gmathews", "displayName": "Gary Mathews", "active": true, "timeZone": "America/Los_Angeles" }, "body": "master: https://github.com/appcelerator/titanium_mobile/pull/10148", "updateAuthor": { "name": "gmathews", "key": "gmathews", "displayName": "Gary Mathews", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-07-02T21:40:36.000+0000", "updated": "2018-07-02T21:40:36.000+0000" }, { "id": "439377", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~gmathews] Using SDK version {{7.4.0.v20180718223310}} and the test case provided in the description. I get an application crash (no error shown in the console) when choosing an answer and then pressing submit.\r\n\r\n\r\n*Test Environment*\r\n{code:java}\r\nAPPC Studio: 5.0.0.201712081732\r\nAPPC CLI: 7.0.4\r\nNexus 5X Emulator (7.1.1)\r\nOperating System Name: Mac OS High Sierra\r\nOperating System Version: 10.13\r\nNode.js Version: 8.9.1\r\nXcode 9.2\r\n{code}", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-07-20T17:01:01.000+0000", "updated": "2018-07-20T17:01:01.000+0000" }, { "id": "441847", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "*Closing ticket.* On the latest SDK {{7.5.0.v20180920040518}} the application no longer crashes when clicking on an answer and then pressing submit. \r\n\r\n*Test Environment*\r\nAPPC Studio: 5.1.0.201808080937\r\nAPPC CLI: 7.0.7-master.1\r\nNexus 6P (API 23)\r\nOperating System Name: Mac OS High Sierra\r\nOperating System Version: 10.13.6\r\nNode.js Version: 8.9.1", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-09-20T14:11:00.000+0000", "updated": "2018-09-20T14:11:00.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }