Mercurial > dwindows
diff android/DWindows.kt @ 2519:551313c064f2
Android: Implement ListBox with ListView and fill in the missing listbox functions.
Multiple selection doesn't seem to be working, so might need some more work.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 08 May 2021 21:34:55 +0000 |
parents | d746323f2841 |
children | 167af4b0004b |
line wrap: on
line diff
--- a/android/DWindows.kt Sat May 08 08:43:47 2021 +0000 +++ b/android/DWindows.kt Sat May 08 21:34:55 2021 +0000 @@ -134,6 +134,34 @@ ) } +class DWListBox(context: Context) : ListView(context), OnItemClickListener { + var list = mutableListOf<String>() + var selected: Int = -1 + + init { + setAdapter( + ArrayAdapter( + context, + android.R.layout.simple_list_item_1, list + ) + ) + setOnItemClickListener(this) + } + + override fun onItemClick(parent: AdapterView<*>?, view: View, position: Int, id: Long) { + selected = position + eventHandlerInt(11, position, 0, 0, 0) + } + + external fun eventHandlerInt( + message: Int, + inta: Int, + intb: Int, + intc: Int, + intd: Int + ) +} + class DWindows : AppCompatActivity() { var firstWindow: Boolean = true var windowLayout: LinearLayout? = null @@ -1047,6 +1075,23 @@ return combobox } + fun listBoxNew(cid: Int, multi: Int): DWListBox? + { + var listbox: DWListBox? = null + + waitOnUiThread { + var dataArrayMap = SimpleArrayMap<String, Long>() + + listbox = DWListBox(this) + listbox!!.tag = dataArrayMap + listbox!!.id = cid + if(multi != 0) { + listbox!!.choiceMode = ListView.CHOICE_MODE_MULTIPLE; + } + } + return listbox + } + fun listOrComboBoxAppend(window: View, text: String) { waitOnUiThread { @@ -1054,6 +1099,10 @@ val combobox = window combobox.list.add(text) + } else if(window is DWListBox) { + val listbox = window + + listbox.list.add(text) } } } @@ -1065,6 +1114,10 @@ val combobox = window combobox.list.add(pos, text) + } else if(window is DWListBox) { + val listbox = window + + listbox.list.add(pos, text) } } } @@ -1076,6 +1129,10 @@ val combobox = window combobox.list.clear() + } else if(window is DWListBox) { + val listbox = window + + listbox.list.clear() } } } @@ -1089,6 +1146,10 @@ val combobox = window retval = combobox.list.count() + } else if(window is DWListBox) { + val listbox = window + + retval = listbox.list.count() } } return retval @@ -1102,6 +1163,11 @@ if(index < combobox.list.count()) combobox.list[index] = text + } else if(window is DWListBox) { + val listbox = window + + if(index < listbox.list.count()) + listbox.list[index] = text } } } @@ -1116,6 +1182,11 @@ if(index < combobox.list.count()) retval = combobox.list[index] + } else if(window is DWListBox) { + val listbox = window + + if(index < listbox.list.count()) + retval = listbox.list[index] } } return retval @@ -1130,6 +1201,10 @@ val combobox = window retval = combobox.selected + } else if(window is DWListBox) { + val listbox = window + + retval = listbox.selected } } return retval @@ -1145,6 +1220,17 @@ combobox.selected = index combobox.setText(combobox.list[index]) } + } else if(window is DWListBox) { + val listbox = window + + if(index < listbox.list.count()) { + if(state != 0) { + listbox.selected = index + listbox.setItemChecked(index, true); + } else { + listbox.setItemChecked(index, false); + } + } } } } @@ -1158,6 +1244,25 @@ if(index < combobox.list.count()) { combobox.list.removeAt(index) } + } else if(window is DWListBox) { + val listbox = window + + if(index < listbox.list.count()) { + listbox.list.removeAt(index) + } + } + } + } + + fun listSetTop(window: View, top: Int) + { + waitOnUiThread { + if(window is DWListBox) { + val listbox = window + + if(top < listbox.list.count()) { + listbox.smoothScrollToPosition(top) + } } } }