自定义AndroidTreeView设置支持全选后不勾选某一个,上一级全选不勾选

本文介绍了如何在Android中使用AndroidTreeView实现树形结构时,允许父节点全选但禁止在全选状态下单独取消某个子节点的选择。通过修改ArrowExpandSelectableHeaderHolder.java类,将CheckBox的setOnCheckedChangeListener替换为setOnClickListener,并对子节点和父节点的勾选状态进行单独处理,从而解决了这个问题。提供了具体的代码修改建议。
摘要由CSDN通过智能技术生成

Android 树形结构(AndroidTreeView)github地址:https://github.com/bmelnychuk/AndroidTreeView

引入方式:implementation 'com.github.bmelnychuk:atv:1.2.+'
具体使用请移步github官网

跑了官网的例子,发现父节点勾选后子节点会全部选中,父节点取消勾选后子节点也会全部取消选中

但是在父节点勾选后子节点全部选中的情况下,点击一个子节点不勾选,这时父节点没有取消勾选,居于这种(类似于删除文件有一个没选即不能为全选)使用场景,修改AndroidTreeView项目相关源码

修改主要为ArrowExpandSelectableHeaderHolder.java类

public class ArrowExpandSelectableHeaderHolder extends TreeNode.BaseNodeViewHolder<ArrowExpandSelectableHeaderHolder.IconTreeItem> {
    private TextView tvValue;
    private PrintView arrowView;
    private CheckBox nodeSelector;

    public ArrowExpandSelectableHeaderHolder(Context context) {
        super(context);
    }

    @Override
    public View createNodeView(final TreeNode node, ArrowExpandSelectableHeaderHolder.IconTreeItem value) {
        final LayoutInflater inflater = LayoutInflater.from(context);
        final View view = inflater.inflate(R.layout.layout_selectable_header, null, false);

        tvValue = (TextView) view.findViewById(R.id.node_value);
        tvValue.setText(value.text);

        final PrintView iconView = (PrintView) view.findViewById(R.id.icon);
        iconView.setIconText(context.getResources().getString(value.ico
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值