第三方框架AndroidTreeView官方网址Github Demo其中使用到一个 第三方图标框架Print 。
不使用图标库框架Print(因为不需要)。
分析第三方框架AndroidTreeView:
每一层使用LinearLayout添加内部节点(TreeNodeWrapperView)。
一、实现的功能
默认显示所有年级名称;点击某一个年级,加载其所有班级名称;点击某一班级,加载其所有学生名称。年级、班级单选,学生可多选。选择的项文字变红,没选择的是黑色。相应的箭头会根据状态改变。
二、运行效果
三、功能代码
因为功能需求,在library的AndroidTreeView中新增了一个方法:
//新增函数:只展开自己;收缩自己及子节点
public void toggleNode(TreeNode node,boolean includeSubnodes) {
if (node.isExpanded()) {
collapseNode(node, includeSubnodes);//收缩所有,包括子节点
} else {
expandNode(node, false);//只展开自己
}
}
Fragment代码:
功能逻辑处理整个过程
public class MoreListFragment extends Fragment {
private TextView tvShow;
private ViewGroup containerView;
private AndroidTreeView tView;
private TreeNode choseGradeNode;//已选的年级节点
private String choseGradeStr;//已选的年级值
private List<TreeNode> initGradeList = new ArrayList<>();//已初始化班级节点的年级
private TreeNode choseClassNode;//已选的班级节点
private String choseClassStr;//已选的班级值
private List<TreeNode> initClassList = new ArrayList<>();//已初始化学生节点的班级
private List<String> choseStudentList = new ArrayList<>();//已选的学生值
private int nodeCount = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_default, null, false);
containerView = (ViewGroup) rootView.findViewById(R.id.container);
tvShow = (TextView) rootView.findViewById(R.id.status_