کتابخانه AndroidTreeView اندروید
نمایش درختی ویوها در برنامه نویسی اندروید
به همراه سورس کد ماژول کتابخانه + سورس نمونه
AndroidTreeView، کتابخانهای برای نمایش اطلاعات در یک ساختار درختی میباشد.
امکان پیمایش یا اسکرول نیز در این درخت وجود دارد. ولی به یاد داشته باشید که با محدودیتهایی همراه هستید؛ شما به کمک این کتابخانه نمیتوانید آیتمهای درخت را از راست به چپ بچینید و آنها از چپ به راست خواهند بود. (البته سورس پلاگین در دسترس قرار دارد و میتوانید روی آن تغییراتی اعمال کنید)
نمونههای اجرا شده با این کتابخانه:
ویژگیهای AndroidTreeView
- قابلیت بستن و باز کردن درختها (expandable/collapsable)
- تنظیم مقادیر، ویوها و استایل دلخواه برای نودهای (گره یا بچه) درخت
- نگه داشتن وضعیت، پس از چرخش صفحه
- حالت انتخاب برای گرهها
- امکان اضافه و حذف کردن نودها به صورت داینامیک (پویا)
شروع به کار
ابتدا کتابخانه را به پروژهی خود اضافه کنید:
compile 'com.github.bmelnychuk:atv:1.2.+'
برای شروع کدنویسی، باید یک ریشه بسازیم که گرهها (نودها=Nodes) را درون آن قرار دهیم:
TreeNode root = TreeNode.root();
حالا باید گره (Node) های خود را بسازیم:
TreeNode parent = new TreeNode("MyParentNode"); TreeNode child0 = new TreeNode("ChildNode0"); TreeNode child1 = new TreeNode("ChildNode1"); parent.addChildren(child0, child1); root.addChild(parent);
در اینجا، parent یک نود است که child0 و child1 قرار است داخل آن قرار بگیرند. سپس parent نیز قرار است در نود ریشه قرار بگیرد. توجه داشته باشید که نود ریشه نمایشی نبوده و از parent به بعد نمایش داده خواهد شد.
حالا اگر بخواهیم این را نمایش دهیم، به صورت زیر عمل میکنیم:
AndroidTreeView tView = new AndroidTreeView(getActivity(), root); containerView.addView(tView.getView());
همانطور که میبینید، یک ویو از جنس AndroidTreeView ایجاد کرده و ریشه را درون آن قرار میدهیم. سپس آن را به UI اضافه میکنیم.
سفارشی سازی ویوی نودها
برای انجام این کار، بایستی کلاسی بسازیم که از TreeNode.BaseNodeViewHolder مشتق شده باشد و سپس متد createNodeView آن را اورراید کنیم. برای مثال:
public class MyHolder extends TreeNode.BaseNodeViewHolder<IconTreeItem> { ... @Override public View createNodeView(TreeNode node, IconTreeItem value) { final LayoutInflater inflater = LayoutInflater.from(context); final View view = inflater.inflate(R.layout.layout_profile_node, null, false); TextView tvValue = (TextView) view.findViewById(R.id.node_value); tvValue.setText(value.text); return view; } ... public static class IconTreeItem { public int icon; public String text; } }
در واقع این یک ویوهولدر است. و میتوانیم آن را به صورت زیر به نودها متصل کنیم:
IconTreeItem nodeItem = new IconTreeItem(); TreeNode child1 = new TreeNode(nodeItem).setViewHolder(new MyHolder(mContext));
و در ادامه میتوانید موارد زیر را نیز خودتان تست کنید:
TreeNode.setClickListener(TreeNodeClickListener listener); AndroidTreeView.setDefaultViewHolder AndroidTreeView.setDefaultNodeClickListener ...
نظرات ثبت شده بدون دیدگاه