comparison android/DWindows.kt @ 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 708bcef0ce6b
comparison
equal deleted inserted replaced
2798:a3d62de81ec0 2799:fd7c6ff72383
495 } 495 }
496 496
497 override fun onBindViewHolder(holder: DWTreeViewHolder, position: Int) { 497 override fun onBindViewHolder(holder: DWTreeViewHolder, position: Int) {
498 val currentNode: DWTreeItem = treeItemManager.get(position) 498 val currentNode: DWTreeItem = treeItemManager.get(position)
499 holder.bindTreeItem(currentNode) 499 holder.bindTreeItem(currentNode)
500 val treeItemView = holder.itemView as DWTreeItemView
501
502 // Handle touch on the expand/collapse image
503 treeItemView.expandCollapseView.setOnClickListener { v ->
504 // Handle node expand and collapse event
505 if (!currentNode.getChildren().isEmpty()) {
506 val isNodeExpanded: Boolean = currentNode.isExpanded()
507 if (isNodeExpanded) collapseNode(currentNode) else expandNode(currentNode)
508 currentNode.setExpanded(!isNodeExpanded)
509
510 notifyDataSetChanged()
511
512 // Handle DWTreeItem expand listener event
513 if (!isNodeExpanded && treeItemExpandListener != null) treeItemExpandListener!!(
514 currentNode,
515 v
516 )
517 }
518 }
519 // Handle node selection
500 holder.itemView.setOnClickListener { v -> 520 holder.itemView.setOnClickListener { v ->
501 // Handle node selection 521 // If touched anywhere else, change the selection
502 currentNode.setSelected(true) 522 currentNode.setSelected(true)
503 val treeItemView = holder.itemView as DWTreeItemView
504 treeItemView.isChecked = true 523 treeItemView.isChecked = true
505 currentSelectedItem?.setSelected(false) 524 currentSelectedItem?.setSelected(false)
506 currentSelectedItemView?.isChecked = false 525 currentSelectedItemView?.isChecked = false
507 currentSelectedItem = currentNode 526 currentSelectedItem = currentNode
508 currentSelectedItemView = treeItemView 527 currentSelectedItemView = treeItemView
509 528
510 // Handle node expand and collapse event
511 if (!currentNode.getChildren().isEmpty()) {
512 val isNodeExpanded: Boolean = currentNode.isExpanded()
513 if (isNodeExpanded) collapseNode(currentNode) else expandNode(currentNode)
514 currentNode.setExpanded(!isNodeExpanded)
515 // Handle DWTreeItem expand listener event
516 if (!isNodeExpanded && treeItemExpandListener != null) treeItemExpandListener!!(
517 currentNode,
518 v
519 )
520 }
521 notifyDataSetChanged() 529 notifyDataSetChanged()
522 530
523 // Handle DWTreeItem click listener event 531 // Handle DWTreeItem click listener event
524 if (treeItemClickListener != null) treeItemClickListener!!( 532 if (treeItemClickListener != null) treeItemClickListener!!(
525 currentNode, 533 currentNode,