AndroidTreeView
AndroidTreeView copied to clipboard
How can I use a TreeView in a MaterialDialog?
Hello, I'm quite new to Android development. I'd like to insert an AndroidTreeView in a custom dialog. I'm using this nice lib to create dialogs with custom layouts.
My test code is:
TreeNode root = TreeNode.root();
TreeNode parent = new TreeNode("MyParentNode");
TreeNode child0 = new TreeNode("ChildNode0");
TreeNode child1 = new TreeNode("ChildNode1");
parent.addChildren(child0, child1);
root.addChild(parent);
AndroidTreeView tView = new AndroidTreeView(this, root);
//containerView.addView(tView.getView());
MaterialDialog dialog = new MaterialDialog.Builder(MainActivity.this)
.title("Menu")
.customView(R.layout.menu_view, true)
.build();
and the definition of my menu_view
has nothing except an id. What can I do then? How do I set the custom view before adding it to the dialog?
Thanks
Finally solved this way:
...
AndroidTreeView tView = new AndroidTreeView(this, root);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.menu_view, null);
ViewGroup containerView = (ViewGroup) view.findViewById(R.id.container);
MaterialDialog dialog = new MaterialDialog.Builder(MainActivity.this)
.title("Menu")
.customView(containerView, true)
.build();
dialog.show();
Thanks anyway.
Hello, I've got another issue. I'm trying to represent my TreeView as the TwoDScrollingArrowExpandFragment from your sample. I create my TreeNode like this, passing your two Objects:
TreeNode tn1 = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_folder, pm1.toString())).setViewHolder(new ArrowExpandSelectableHeaderHolder(this));
but I get a runtime exception. Here's my stacktrace:
E: FATAL EXCEPTION: main
android.view.InflateException: Binary XML file line #19: Error inflating class com.github.johnkil.print.PrintView
at android.view.LayoutInflater.createView(LayoutInflater.java:606)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at com.adryx.myapp.Layout.holder.ArrowExpandSelectableHeaderHolder.createNodeView(ArrowExpandSelectableHeaderHolder.java:30)
at com.adryx.myapp.Layout.holder.ArrowExpandSelectableHeaderHolder.createNodeView(ArrowExpandSelectableHeaderHolder.java:18)
at com.unnamed.b.atv.model.TreeNode$BaseNodeViewHolder.getNodeView(TreeNode.java:258)
at com.unnamed.b.atv.model.TreeNode$BaseNodeViewHolder.getView(TreeNode.java:237)
at com.unnamed.b.atv.view.AndroidTreeView.addNode(AndroidTreeView.java:258)
at com.unnamed.b.atv.view.AndroidTreeView.expandNode(AndroidTreeView.java:241)
at com.unnamed.b.atv.view.AndroidTreeView.getView(AndroidTreeView.java:137)
at com.unnamed.b.atv.view.AndroidTreeView.getView(AndroidTreeView.java:142)
at com.adryx.myapp.Layout.MainActivity.showMenu(MainActivity.java:666)
at com.adryx.myapp.Layout.MainActivity.onOptionsItemSelected(MainActivity.java:613)
at android.app.Activity.onMenuItemSelected(Activity.java:2506)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:421)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:188)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
at android.support.v7.app.AppCompatDelegateImplV7.onMenuItemSelected(AppCompatDelegateImplV7.java:663)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:618)
at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:155)
at android.view.View.performClick(View.java:3620)
at android.view.View$PerformClick.run(View.java:14322)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:586)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at com.adryx.myapp.Layout.holder.ArrowExpandSelectableHeaderHolder.createNodeView(ArrowExpandSelectableHeaderHolder.java:30)
at com.adryx.myapp.Layout.holder.ArrowExpandSelectableHeaderHolder.createNodeView(ArrowExpandSelectableHeaderHolder.java:18)
at com.unnamed.b.atv.model.TreeNode$BaseNodeViewHolder.getNodeView(TreeNode.java:258)
at com.unnamed.b.atv.model.TreeNode$BaseNodeViewHolder.getView(TreeNode.java:237)
at com.unnamed.b.atv.view.AndroidTreeView.addNode(AndroidTreeView.java:258)
at com.unnamed.b.atv.view.AndroidTreeView.expandNode(AndroidTreeView.java:241)
at com.unnamed.b.atv.view.AndroidTreeView.getView(AndroidTreeView.java:137)
at com.unnamed.b.atv.view.AndroidTreeView.getView(AndroidTreeView.java:142)
at com.adryx.myapp.Layout.MainActivity.showMenu(MainActivity.java:666)
at com.adryx.myapp.Layout.MainActivity.onOptionsItemSelected(MainActivity.java:613)
at android.app.Activity.onMenuItemSelected(Activity.java:2506)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:421)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:188)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
at android.support.v7.app.AppCompatDelegateImplV7.onMenuItemSelected(AppCompatDelegateImplV7.java:663)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:618)
at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:155)
at android.view.View.performClick(View.java:3620)
at android.view.View$PerformClick.run(View.java:14322)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: native typeface cannot be made
at android.graphics.Typeface.<init>(Typeface.java:245)
at android.graphics.Typeface.createFromAsset(Typeface.java:219)
at com.github.johnkil.print.TypefaceManager.load(TypefaceManager.java:48)
at com.github.johnkil.print.PrintViewUtils.initIcon(PrintViewUtils.java:54)
at com.github.johnkil.print.PrintView.init(PrintView.java:60)
at com.github.johnkil.print.PrintView.<init>(PrintView.java:45)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:586)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at com.adryx.myapp.Layout.holder.ArrowExpandSelectableHeaderHolder.createNodeView(ArrowExpandSelectableHeaderHolder.java:30)
at com.adryx.myapp.Layout.holder.ArrowExpandSelectableHeaderHolder.createNodeView(ArrowExpandSelectableHeaderHolder.java:18)
at com.unnamed.b.atv.model.TreeNode$BaseNodeViewHolder.getNodeView(TreeNode.java:258)
at com.unnamed.b.atv.model.TreeNode$BaseNodeViewHolder.getView(TreeNode.java:237)
at com.unnamed.b.atv.view.AndroidTreeView.addNode(AndroidTreeView.java:258)
at com.unnamed.b.atv.view.AndroidTreeView.expandNode(AndroidTreeView.java:241)
at com.unnamed.b.atv.view.AndroidTreeView.getView(AndroidTreeView.java:137)
at com.unnamed.b.atv.view.AndroidTreeView.getView(AndroidTreeView.java:142)
at com.adryx.myapp.Layout.MainActivity.showMenu(MainActivity.java:666)
at com.adryx.myapp.Layout.MainActivity.onOptionsItemSelected(MainActivity.java:613)
at android.app.Activity.onMenuItemSelected(Activity.java:2506)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:421)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:188)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:103)
at android.support.v7.app.AppCompatDelegateImplV7.onMenuItemSelected(AppCompatDelegateImplV7.java:663)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:947)
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:618)
at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:155)
at android.view.View.performClick(View.java:3620)
at android.view.View$PerformClick.run(View.java:14322)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
at dalvik.system.NativeStart.main(Native Method)
I think there's some layout problem. Can you please help me?
Looks like this is dependency issue, I used PrintView (https://github.com/johnkil/Print) to display icons from font
Never mind, I created my own custom layout.
@adryx92 please can you suggest me how you did this ?
Hey i solved issue, it is missing of file "fonts/material-icon-font.ttf" on assets folder :)