Andriod实战项目开发之十四----树形结构,增加节点后如何处理页面的刷新机制

效果图

 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initData();
        LinearLayoutManager manager = new LinearLayoutManager(mActivity);
        mTreeListRecy = view.findViewById(R.id.mTreeListRecy);
        if (mTreeListRecy != null) {
            mTreeListRecy.setLayoutManager(manager);
            mTreeListRecy.setAdapter(adapter);
            //Tree2HeaderView tree2HeaderView = new Tree2HeaderView(mActivity);
            treeHeaderView = new TreeHeaderView(mActivity,dataList);
            adapter.addHeaderView(treeHeaderView);
            //ArrayList<String> list = new ArrayList<>();
            //for (int i = 0; i < 30; i++) {
                //list.add("数据" + i);
            //}
            //adapter.addData(list);
            initNode();

        } else {
            Log.e("GoodItemTreeFragment", "mTreeListRecy is null");
        }
    }

二、关键代码 initNode函数

public void initNode(){
        treeHeaderView.getAdapter().setTreeCheckedChangeListener(new TreeRecyclerViewAdapter.OnTreeCheckedChangeListener() {
            @Override
            public void onAddItem(NodeBean nodeBean) {
                //View v = LayoutInflater.from(mContext).inflate(R.layout.popup_good_tree, null);
                //Log.e("TAG1231", "onAddItem position: " + nodeBean.getId());
                popupWindows = new CommonPopupWindow.Builder(getContext())
                        .setView(R.layout.popup_good_tree)
                        .setWidthAndHeight(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT)
                        .setViewOnclickListener(new CommonPopupWindow.ViewInterface() {
                            @Override
                            public void getChildView(View view, int layoutResId) {
                                ImageView cancel=view.findViewById(R.id.cancel_button);
                                TextView parent=view.findViewById(R.id.good_tree_parent);
                                EditText treeWeigh=view.findViewById(R.id.good_tree_weigh);
                                EditText treeName=view.findViewById(R.id.good_tree_name);
                                TextView btnConfirm=view.findViewById(R.id.btn_confirm);
                                cancel.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View view) {
                                        popupWindows.dismiss();
                                    }
                                });
                                //增加角色
                                btnConfirm.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View view) {
                                        //Log.e("新增节点", "onAddItem parent: " +
                                        //"权重"+nodeBean.getId()+treeWeigh.getText().toString()
                                        //+"规格名"+treeName.getText().toString());
                                        dataList.add(new NodeBean(String.valueOf(dataList.size()), nodeBean.getId(), treeName.getText().toString()));
                                        refresh();
                                        popupWindows.dismiss();
                                    }
                                });
                            }
                        })
                        .setOutsideTouchable(true)
                        .create();

                popupWindows.showAtLocation(getView(), Gravity.BOTTOM, 0, 0);
            }

            @Override
            public void onEditItem(NodeBean nodeBean, int position) {
                //Log.e("TAG1231", "onEditItem position: " + nodeBean.getName());
                popupWindows = new CommonPopupWindow.Builder(getContext())
                        .setView(R.layout.popup_good_tree)
                        .setWidthAndHeight(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT)
                        .setViewOnclickListener(new CommonPopupWindow.ViewInterface() {
                            @Override
                            public void getChildView(View view, int layoutResId) {
                                ImageView cancel=view.findViewById(R.id.cancel_button);
                                EditText treeWeigh=view.findViewById(R.id.good_tree_weigh);
                                EditText treeName=view.findViewById(R.id.good_tree_name);
                                TextView btnConfirm=view.findViewById(R.id.btn_confirm);
                                treeWeigh.setText(nodeBean.getId());
                                treeName.setText(nodeBean.getName());
                                cancel.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View view) {
                                        popupWindows.dismiss();
                                    }
                                });
                                //增加角色
                                btnConfirm.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View view) {
                                        Log.e("保存节点", "onAddItem parent: " +
                                                "权重"+nodeBean.getId()+treeWeigh.getText().toString()
                                                +"规格名"+treeName.getText().toString());
                                    }
                                });
                            }
                        })
                        .setOutsideTouchable(true)
                        .create();

                popupWindows.showAtLocation(view, Gravity.BOTTOM, 0, 0);
            }

            @Override
            public void onDeleItem(NodeBean nodeBean, int position) {
                //Log.e("TAG1231", "onDeleItem position: " + nodeBean.getName());
                confirmDelete(nodeBean.getId());
            }
        });
    }

三、通知刷新refresh函数。

public void refresh(){
        // 移除旧的 TreeHeaderView
        if (adapter != null) {
            adapter.removeHeaderView(treeHeaderView);
        }

        // 创建并添加新的 TreeHeaderView
        treeHeaderView = new TreeHeaderView(mActivity, dataList);
        treeHeaderView.setOnCheckedChangeListener(checkedChangeListener);
        adapter.addHeaderView(treeHeaderView);
        initNode();
        // 刷新整个列表
        adapter.notifyDataSetChanged();
    }

本功能实现,点击增加节点后,界面刷新。欢迎有兴趣的伙伴,共同研究。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值