当前位置: 代码迷 >> 综合 >> 二级ExpandableListView
  详细解决方案

二级ExpandableListView

热度:71   发布时间:2023-10-15 10:28:26.0
public class BeginWorkFlowActivity extends Activity {private final WorkFlowViewModel viewModel = new WorkFlowViewModel();private String[] groupNames = {"台灯", "地毯", "花瓶", "抱枕"};private String[][] childNames = {{"贴画1", "贴画2", "贴画3", "贴画4", "贴画5", "贴画6", "贴画7", "贴画8","贴画9", "贴画10", "贴画11", "贴画12", "贴画13", "贴画14", "贴画15","贴画16"},{"地毯1", "地毯2", "地毯3", "地毯4", "地毯5", "地毯6", "地毯7", "地毯8"},{"花瓶1", "花瓶2", "花瓶3", "花瓶4", "花瓶5", "花瓶6", "花瓶7", "花瓶8","花瓶9", "花瓶10", "花瓶11", "花瓶12", "花瓶13"},{"抱枕1", "抱枕2", "抱枕3", "抱枕4", "抱枕5", "抱枕6", "抱枕7", "抱枕8"}};private List<String> select = new ArrayList<>();@BindView(R.id.work_flow_el)ExpandableListView mListView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_work_flow);WindowUtils.setTraspartenStatusBar(this);if (SPUtils.getInt(this, SPConstants.VIRTUAL) != 0) {findViewById(R.id.activity_bg).setPadding(0, 0, 0, SPUtils.getInt(this, SPConstants.VIRTUAL));}ButterKnife.bind(this);mListView.setGroupIndicator(null);mListView.setAdapter(new StructAdapter());}private boolean beginFlow() {//是从缺陷过来的WorkFlowIn workFlowIn = new WorkFlowIn();workFlowIn.setUserno(SPUtils.getString(this, "account"));workFlowIn.setPassWord(SPUtils.getString(this, "pwd"));workFlowIn.setBusinessKey(getIntent().getStringExtra("primaryKey"));workFlowIn.setInstName("配网缺陷管理");workFlowIn.setProcNo("PWQXLC");viewModel.beginWorkFlow(workFlowIn);return false;}@OnClick(R.id.back_arrow)void clickBack(View view) {finish();}@OnClick(R.id.tv_finish)void clickComfirm(View view) {if (getIntent().getBooleanExtra("isFrom", false)) {if (!beginFlow()) {ToastUtils.showToast(this, "启动工作流失败");return;}}//发送人员}/*** @param activity* @param key* @param isFrom   位true代表是从缺陷过来的,位false代表是其他界面过来的*/public static void actionStart(Activity activity, String key, boolean isFrom) {Intent intent = new Intent(activity, BeginWorkFlowActivity.class);intent.putExtra("primaryKey", key);intent.putExtra("isFrom", isFrom);activity.startActivity(intent);}private class StructAdapter extends BaseExpandableListAdapter {@Overridepublic int getGroupCount() {return groupNames.length;}@Overridepublic int getChildrenCount(int i) {return childNames[i].length;}@Overridepublic Object getGroup(int i) {return groupNames[i];}@Overridepublic Object getChild(int i, int i1) {return childNames[i][i1];}@Overridepublic long getGroupId(int i) {return i;}@Overridepublic long getChildId(int i, int i1) {return i1;}@Overridepublic boolean hasStableIds() {return true;}@Overridepublic View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {GroupViewHolder holder;if (view == null) {view = View.inflate(viewGroup.getContext(), R.layout.struct_group, null);holder = new GroupViewHolder(view);view.setTag(holder);} else {holder = (GroupViewHolder) view.getTag();}holder.updateView(i, b);return view;}@Overridepublic View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {ChildViewHolder holder;if (view == null) {view = View.inflate(viewGroup.getContext(), R.layout.struct_child, null);holder = new ChildViewHolder(view);view.setTag(holder);} else {holder = (ChildViewHolder) view.getTag();}holder.updateChildeView(i, i1);return view;}@Overridepublic boolean isChildSelectable(int i, int i1) {return true;}}class GroupViewHolder {@BindView(R.id.group_tv)TextView groupTv;@BindView(R.id.arrow)ImageView arrowIv;public GroupViewHolder(View view) {ButterKnife.bind(this, view);}public void updateView(int groupPosition, boolean isExpanded) {String groupName = groupNames[groupPosition];groupTv.setText(groupName);if (isExpanded) {arrowIv.setImageResource(R.mipmap.arrow_down);} else {arrowIv.setImageResource(R.mipmap.arrow_right);}}}class ChildViewHolder {@BindView(R.id.cb_record)CheckBox checkBox;@BindView(R.id.tv_name)TextView nameTv;@BindView(R.id.child_layout)LinearLayout childLayout;public ChildViewHolder(View view) {ButterKnife.bind(this, view);}public void updateChildeView(int groupPosition, int childPosition) {String name = childNames[groupPosition][childPosition];childLayout.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (checkBox.isChecked()) {checkBox.setChecked(false);select.remove(name);} else {checkBox.setChecked(true);select.add(name);}}});nameTv.setText(name);}}
}

三级的listview我下次上传,超过三级的我建议用TreeView来完成或者跳转界面完成。