Mercurial > dwindows
diff android/DWindows.kt @ 2561:f28d7d0ca5ed
Android: Attempt at implementing updating the container after insertion.
I am trying to use notifyDataSetChanged() in our DWContainerAdapter class.
This is called via _dw_container_refresh() and containerRefresh()
however it does not seem to be working yet.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 18 May 2021 22:48:33 +0000 |
parents | 3da35cd91ca7 |
children | 11411f103d27 |
line wrap: on
line diff
--- a/android/DWindows.kt Tue May 18 18:41:35 2021 +0000 +++ b/android/DWindows.kt Tue May 18 22:48:33 2021 +0000 @@ -642,35 +642,54 @@ } override fun getView(position: Int, view: View?, parent: ViewGroup): View { - val rowView = ConstraintLayout(context) - val set = ConstraintSet() - - // Every container at least has an icon and text - val imageview = ImageView(context) - val textview = TextView(context) - - if(model.numberOfColumns() > 1 && model.numberOfRows() > position) { - val first = model.getRowAndColumn(position, 0) - val second = model.getRowAndColumn(position, 1) - - if(first is Drawable) { - imageview.setImageDrawable(first) + var rowView: ConstraintLayout? = view as ConstraintLayout + + // If the view passed in is null we need to create the layout + if(rowView == null) { + rowView = ConstraintLayout(context) + val set = ConstraintSet() + // Every container at least has an icon and text + val imageview = ImageView(context) + val textview = TextView(context) + + if (model.numberOfColumns() > 1 && model.numberOfRows() > position) { + val first = model.getRowAndColumn(position, 0) + val second = model.getRowAndColumn(position, 1) + + if (first is Drawable) { + imageview.setImageDrawable(first) + } + if (second is String) { + textview.text = second + } } - if(second is String) { - textview.text = second + + // Add the two main components to the layout + imageview.id = View.generateViewId() + textview.id = View.generateViewId() + rowView.addView(imageview) + rowView.addView(textview) + set.clone(rowView) + set.connect(imageview.id, ConstraintSet.LEFT, textview.id, ConstraintSet.RIGHT) + set.applyTo(rowView) + + // TODO: Add code to optionally add other columns + } else { + // Otherwise we just need to update the existing layout + if (model.numberOfColumns() > 1 && model.numberOfRows() > position) { + val first = model.getRowAndColumn(position, 0) + val second = model.getRowAndColumn(position, 1) + val imageview = rowView.getChildAt(0) + val textview = rowView.getChildAt(1) + + if (first is Drawable && imageview is ImageView) { + imageview.setImageDrawable(first) + } + if (second is String && textview is TextView) { + textview.text = second + } } } - - // Add the two main components to the layout - imageview.id = View.generateViewId() - textview.id = View.generateViewId() - rowView.addView(imageview) - rowView.addView(textview) - set.clone(rowView) - set.connect(imageview.id, ConstraintSet.LEFT, textview.id, ConstraintSet.RIGHT) - set.applyTo(rowView) - - // TODO: Add code to optionally add other columns return rowView } } @@ -2224,6 +2243,15 @@ } } + fun containerRefresh(cont: ListView) + { + waitOnUiThread { + val adapter: DWContainerAdapter = cont.adapter as DWContainerAdapter + + adapter.notifyDataSetChanged() + } + } + fun containerGetColumnType(cont: ListView, column: Int): Int { var type: Int = 0