对Android TreeView 的实现,目录结构的实现
来源:互联网 发布:天刀侠女捏脸数据 编辑:程序博客网 时间:2024/05/21 09:32
在安卓开发中,或多或少的会用到目录结构,也就是tree的实现,下面是实现的步骤。
1.首先应该导入包的依赖。
compile 'com.github.bmelnychuk:atv:1.2.+'
2.第二步对树型结构进行布局,我自己设置的是一个图片后有一段文字。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:paddingBottom="5dp" android:paddingLeft="5dp" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dp"/> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
3.然后再代码中对tree结构进行定义,我这里的isSub是判断其是否为子节点。
class IconTreeItem { public boolean isSub; public int icon; public String text; }
4.要使用树,要先对给树定义一个Holder,将tree结构放到Holder中,在createNodeView中对布局文件进行引入和数据进行适配。
class MyHolder extends TreeNode.BaseNodeViewHolder<IconTreeItem> { public MyHolder(Context context){ super(context); } @Override public View createNodeView(TreeNode node, IconTreeItem value) { final LayoutInflater inflater = LayoutInflater.from(context); final View view = inflater.inflate(R.layout.tree_item, null, false); if (value.isSub){ view.setPadding(50,20,10,20); } TextView tvValue = (TextView) view.findViewById(R.id.textView); ImageView ivValue=(ImageView)view.findViewById(R.id.img) ; tvValue.setText(value.text); ivValue.setImageResource(value.icon); return view; } }
5.对tree进行初始化,我这里是两级目录分别用两个List来接收数据和将数据放入树中。
private void initTree() { List<Category1> list1= this.category.getResult(); TreeNode root = TreeNode.root(); for (Category1 c1:list1){ String name=c1.getName(); IconTreeItem nodeItem = new IconTreeItem(); nodeItem.icon=R.drawable.timg_meitu_4; nodeItem.text=name; nodeItem.isSub=false; TreeNode parent = new TreeNode(nodeItem).setViewHolder(new MyHolder(getActivity())); List<Category2> list2=c1.getList(); for (final Category2 c2:list2){ String SubName=c2.getName(); IconTreeItem nodeItem2 = new IconTreeItem(); nodeItem2.icon=R.drawable.timg_meitu_5; nodeItem2.text=SubName; nodeItem2.isSub=true; TreeNode child = new TreeNode(nodeItem2).setViewHolder(new MyHolder(getActivity())); child.setClickListener(new TreeNode.TreeNodeClickListener() { @Override public void onClick(TreeNode node, Object value) { String id=c2.getId(); cookBookPresenter.getCookBookById(getActivity(),id); pb.setVisibility(View.VISIBLE); } }); parent.addChild(child); } root.addChild(parent); } AndroidTreeView tView = new AndroidTreeView(getActivity(), root); treecontainer.addView(tView.getView()); }
首先获取到数据,然后定义一个树的根节点root,然后将数据解析,对list1其中的每一项对其数据进行设置,然后 定义一个父节点parent,将数据放到这个节点中,对这个TreeNode设置一个持有类Holder,然后再对list1进行解析,再对list2其中的每一项对其数据进行设置,然后 定义一个子节点child,将数据放到这个节点中,对这个TreeNode设置一个持有类Holder,最后将这个子结点child加入到parent节点中,对子节点解析完后,再将parent结点加到root结点中,最后创建一个 AndroidTreeView tView = new AndroidTreeView(getActivity(), root);
将创建好的树root给它添加一个AndroidTreeView ,之后再
treecontainer.addView(tView.getView());
将这个view给自己定义的一个view,,我这里是一个LinnerLayout,将这个树放到线性布局中,这样就彻底完成了。
阅读全文
0 0
- 对Android TreeView 的实现,目录结构的实现
- 实现对TreeView的遍历
- Jquery的treeview插件实现树形结构
- JS实现对TreeView的全选
- Virtual Treeview 的实现
- 对android应用程序目录结构的说明
- Android应用源码ListView实现的目录树结构
- android 树形目录结构的实现(包含源码)
- 如何实现具有层次结构的 TreeView 模版使用
- 仅仅十几行代码实现对TreeView的遍历
- sqlserver实现对TreeView节点上下移动的排序功能
- 如何实现具有层次结构的 TreeView <二> (WPF/TreeView/Style/Template)
- 如何实现具有层次结构的 TreeView <三> (WPF/TreeView/Style/Template)
- 如何实现具有层次结构的 TreeView <一> (WPF/TreeView/Style/Template)
- 如何实现具有层次结构的 TreeView <四> (WPF/TreeView/Style/Template)
- 如何实现具有层次结构的 TreeView <四> (WPF/TreeView/Style/Template)
- 用递归实现目录结构的复制
- TreeView的ASP.NET实现
- SQL必知必会第4版读书笔记
- centos yum 安装 jdk1.8
- MQTT安全篇
- 工业相机的几点看法
- python圣斗士修炼(一):实现hello world
- 对Android TreeView 的实现,目录结构的实现
- 记账本弹出框判断
- Android中RelativeLayout各个属性
- 无人驾驶汽车系统入门(二)——高级运动模型和扩展卡尔曼滤波
- UVALive
- 超级楼梯
- HDU 5340 Three Palindromes 暴力+Manacher
- AndroidStudio查看类的结构和继承关系快捷键
- 第七周【项目3