Mercurial > dwindows
changeset 2774:94af460bb954
Android: Implement dw_tree_new() and verify code doesn't crash.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 24 May 2022 09:42:35 +0000 |
parents | f207b7ee177f |
children | 5f77f52df8ac |
files | android/DWindows.kt android/dw.cpp |
diffstat | 2 files changed, 20 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/android/DWindows.kt Thu Apr 21 20:58:08 2022 +0000 +++ b/android/DWindows.kt Tue May 24 09:42:35 2022 +0000 @@ -4489,21 +4489,25 @@ return combobox } - /*fun treeNew(cid: Int): RecyclerView? + fun treeNew(cid: Int): RecyclerView? { var tree: RecyclerView? = null waitOnUiThread { tree = RecyclerView(this) if(tree != null) { - val factory = DWTreeViewHolderFactory { v: View?, layout: Int -> DWTreeCustomViewHolder(v!!) } + val factory = object : DWTreeViewHolderFactory { + override fun getTreeViewHolder(view: View?, layout: Int): DWTreeViewHolder { + return DWTreeCustomViewHolder(view!!) + } + } val treeViewAdapter = DWTreeViewAdapter(factory) tree!!.id = cid tree!!.adapter = treeViewAdapter } } return tree - }*/ + } fun containerNew(cid: Int, multi: Int): ListView? {
--- a/android/dw.cpp Thu Apr 21 20:58:08 2022 +0000 +++ b/android/dw.cpp Tue May 24 09:42:35 2022 +0000 @@ -3284,7 +3284,19 @@ */ HWND API dw_tree_new(ULONG cid) { - /* TODO: Implement the tree if possible. */ + JNIEnv *env; + + if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) + { + // First get the class that contains the method you need to call + jclass clazz = _dw_find_class(env, DW_CLASS_NAME); + // Get the method that you want to call + jmethodID treeNew = env->GetMethodID(clazz, "treeNew", + "(I)Landroidx/recyclerview/widget/RecyclerView;"); + // Call the method on the object + jobject result = _dw_jni_check_result(env, env->CallObjectMethod(_dw_obj, treeNew, (int)cid), _DW_REFERENCE_WEAK); + return result; + } return nullptr; }