Andriod Practical Project Development No. 14 – Tree Structure, How to Handle the Page Refresh Mechanism after Adding Nodes

Renderings

 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("data" + i);
            //}
            //adapter.addData(list);
            initNode();

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

2. Key code initNode function

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();
                                    }
                                });
                                //Add role
                                btnConfirm.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View view) {
                                        //Log.e("New node", "onAddItem parent: " +
                                        //"Weight" + nodeBean.getId() + treeWeigh.getText().toString()
                                        // + "Specification name" + 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();
                                    }
                                });
                                //Add role
                                btnConfirm.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View view) {
                                        Log.e("Save Node", "onAddItem parent: " +
                                                "Weight" + nodeBean.getId() + treeWeigh.getText().toString()
                                                 + "Specification name" + 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());
            }
        });
    }

3. Notification refresh refresh function.

public void refresh(){
        // Remove the old TreeHeaderView
        if (adapter != null) {
            adapter.removeHeaderView(treeHeaderView);
        }

        //Create and add a new TreeHeaderView
        treeHeaderView = new TreeHeaderView(mActivity, dataList);
        treeHeaderView.setOnCheckedChangeListener(checkedChangeListener);
        adapter.addHeaderView(treeHeaderView);
        initNode();
        // Refresh the entire list
        adapter.notifyDataSetChanged();
    }

This function is implemented. After clicking to add a node, the interface is refreshed. Interested partners are welcome to study together.