changeset 2690:755d9ad07aaf

Android: Fix state exception by calling notifyDataSetChanged() on DWListBox. Avoid warnings creating bitmaps from resources by not calling setImageResource() unless the resource ID is greater than 65535. Use App ID when logging messages.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 31 Oct 2021 12:59:45 +0000
parents 7127de139acf
children e13607b87517
files android/DWindows.kt
diffstat 1 files changed, 18 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/android/DWindows.kt	Thu Oct 28 17:27:59 2021 +0000
+++ b/android/DWindows.kt	Sun Oct 31 12:59:45 2021 +0000
@@ -811,6 +811,7 @@
     var notificationID: Int = 0
     var darkMode: Int = -1
     var lastClickView: View? = null
+    private var appID: String? = null
     private var paint = Paint()
     private var bgcolor: Int? = null
     private var fileURI: Uri? = null
@@ -1909,7 +1910,6 @@
 
             button!!.tag = dataArrayMap
             button!!.id = resid
-            button!!.setImageResource(resid)
             button!!.setOnClickListener {
                 lastClickView = button!!
                 eventHandlerSimple(button!!, DWEvent.CLICKED)
@@ -1917,6 +1917,8 @@
 
             if(resid > 0 && resid < 65536) {
                 filename = resid.toString()
+            } else {
+                button!!.setImageResource(resid)
             }
 
             if(filename != null) {
@@ -3155,6 +3157,8 @@
                 val listbox = window
 
                 listbox.list.add(text)
+                val adapter = listbox.adapter as ArrayAdapter<String>
+                adapter.notifyDataSetChanged()
             }
         }
     }
@@ -3170,6 +3174,8 @@
                 val listbox = window
 
                 listbox.list.add(pos, text)
+                val adapter = listbox.adapter as ArrayAdapter<String>
+                adapter.notifyDataSetChanged()
             }
         }
     }
@@ -3185,6 +3191,8 @@
                 val listbox = window
 
                 listbox.list.clear()
+                val adapter = listbox.adapter as ArrayAdapter<String>
+                adapter.notifyDataSetChanged()
             }
         }
     }
@@ -3218,8 +3226,11 @@
             } else if(window is DWListBox) {
                 val listbox = window
 
-                if(index > -1 && index < listbox.list.count())
+                if(index > -1 && index < listbox.list.count()) {
                     listbox.list[index] = text
+                    val adapter = listbox.adapter as ArrayAdapter<String>
+                    adapter.notifyDataSetChanged()
+                }
             }
         }
     }
@@ -3301,6 +3312,8 @@
 
                 if(index < listbox.list.count()) {
                     listbox.list.removeAt(index)
+                    val adapter = listbox.adapter as ArrayAdapter<String>
+                    adapter.notifyDataSetChanged()
                 }
             }
         }
@@ -3991,7 +4004,7 @@
 
     fun debugMessage(text: String)
     {
-        Log.d(null, text)
+        Log.d(appID, text)
     }
 
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
@@ -4179,6 +4192,8 @@
 
     fun dwInit(appid: String, appname: String): Int
     {
+        appID = appid
+
         waitOnUiThread {
             // Create the notification channel in dw_init()
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {