Mercurial > dwindows
changeset 2781:c28602443759
Android: Add DWTreeItemView class based on LinearLayout.
Create a DWTreeItemView instead of inflating a layout.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 07 Jul 2022 00:47:25 +0000 |
parents | 9a3024fe719c |
children | dff8fb5ddadd |
files | android/DWindows.kt |
diffstat | 1 files changed, 48 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/android/DWindows.kt Tue Jun 28 09:33:38 2022 +0000 +++ b/android/DWindows.kt Thu Jul 07 00:47:25 2022 +0000 @@ -165,6 +165,40 @@ } } + +class DWTreeItemView : LinearLayout { + var expandCollapseView: ImageView = ImageView(context) + var iconView: ImageView = ImageView(context) + var textView: TextView = TextView(context) + + fun setup(context: Context?) { + var params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT) + this.orientation = LinearLayout.HORIZONTAL + params.gravity = Gravity.CENTER + expandCollapseView.layoutParams = params + expandCollapseView.id = View.generateViewId() + this.addView(expandCollapseView) + iconView.layoutParams = params + iconView.id = View.generateViewId() + this.addView(iconView) + params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) + params.gravity = Gravity.CENTER + textView.layoutParams = params + textView.id = View.generateViewId() + this.addView(textView) + } + + constructor(context: Context?) : super(context) { + setup(context) + } + constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) { + setup(context) + } + constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super(context, attrs, defStyle) { + setup(context) + } +} + class DWTreeItemManager { // Collection to save the current tree nodes private val rootsNodes: LinkedList<DWTreeItem> @@ -354,12 +388,25 @@ // @param node the current DWTreeItem fun bindTreeItem(node: DWTreeItem) { val padding: Int = node.getLevel() * nodePadding + val treeItemView = itemView as DWTreeItemView + itemView.setPadding( padding, itemView.paddingTop, itemView.paddingRight, itemView.paddingBottom ) + treeItemView.textView.text = node.getTitle() + treeItemView.iconView.setImageDrawable(node.getIcon()) + if(node.getChildren().size == 0) { + treeItemView.expandCollapseView.setImageDrawable(null) + } else { + if(node.isExpanded()) { + treeItemView.expandCollapseView.setImageResource(R.drawable.star_on) + } else { + treeItemView.expandCollapseView.setImageResource(R.drawable.star_off) + } + } } } @@ -428,7 +475,7 @@ } override fun onCreateViewHolder(parent: ViewGroup, layoutId: Int): DWTreeViewHolder { - val view = LayoutInflater.from(parent.context).inflate(layoutId, parent, false) + val view = DWTreeItemView(parent.context) return treeViewHolderFactory.getTreeViewHolder(view, layoutId) }