效果图
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();
}
本功能实现,点击增加节点后,界面刷新。欢迎有兴趣的伙伴,共同研究。