changeset 2799:fd7c6ff72383

Android: Separate handling of expand/collapse when touched on the expandCollpaseView. Touching anywhere else on the row will select the node.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 17 Jul 2022 00:26:33 +0000
parents a3d62de81ec0
children 56eab3a84b62
files android/DWindows.kt
diffstat 1 files changed, 21 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/android/DWindows.kt	Sat Jul 16 21:46:35 2022 +0000
+++ b/android/DWindows.kt	Sun Jul 17 00:26:33 2022 +0000
@@ -497,27 +497,35 @@
     override fun onBindViewHolder(holder: DWTreeViewHolder, position: Int) {
         val currentNode: DWTreeItem = treeItemManager.get(position)
         holder.bindTreeItem(currentNode)
+        val treeItemView = holder.itemView as DWTreeItemView
+
+        // Handle touch on the expand/collapse image
+        treeItemView.expandCollapseView.setOnClickListener { v ->
+            // Handle node expand and collapse event
+            if (!currentNode.getChildren().isEmpty()) {
+                val isNodeExpanded: Boolean = currentNode.isExpanded()
+                if (isNodeExpanded) collapseNode(currentNode) else expandNode(currentNode)
+                currentNode.setExpanded(!isNodeExpanded)
+
+                notifyDataSetChanged()
+
+                // Handle DWTreeItem expand listener event
+                if (!isNodeExpanded && treeItemExpandListener != null) treeItemExpandListener!!(
+                    currentNode,
+                    v
+                )
+            }
+        }
+        // Handle node selection
         holder.itemView.setOnClickListener { v ->
-            // Handle node selection
+            // If touched anywhere else, change the selection
             currentNode.setSelected(true)
-            val treeItemView = holder.itemView as DWTreeItemView
             treeItemView.isChecked = true
             currentSelectedItem?.setSelected(false)
             currentSelectedItemView?.isChecked = false
             currentSelectedItem = currentNode
             currentSelectedItemView = treeItemView
 
-            // Handle node expand and collapse event
-            if (!currentNode.getChildren().isEmpty()) {
-                val isNodeExpanded: Boolean = currentNode.isExpanded()
-                if (isNodeExpanded) collapseNode(currentNode) else expandNode(currentNode)
-                currentNode.setExpanded(!isNodeExpanded)
-                // Handle DWTreeItem expand listener event
-                if (!isNodeExpanded && treeItemExpandListener != null) treeItemExpandListener!!(
-                    currentNode,
-                    v
-                )
-            }
             notifyDataSetChanged()
 
             // Handle DWTreeItem click listener event