如图:
1.activity
public class HousingBillsActivity extends BaseActivity { @BindView(R.id.rlBack) RelativeLayout rlBack; @BindView(R.id.tvTitleName) TextView tvTitleName; @BindView(R.id.tvAddress) TextView tvAddress; @BindView(R.id.tvName) TextView tvName; @BindView(R.id.tvClickAll) TextView tvClickAll; @BindView(R.id.expanfListView) ExpandableListView expanfListView; @BindView(R.id.tvJine) TextView tvJine; @BindView(R.id.tvjiaofei) TextView tvjiaofei; private Context context = this; private BillsExpandListView billsExpandListView; private Listgroup; private List > child; private List
beans; private boolean choose = true; private List test = new ArrayList<>(); private PopupWindow mPopWindow; private String pay = ""; @Override public void setContentView() { setContentView(R.layout.activity_housing_bills); EventBus.getDefault().register(this); } @Override public void initData() { tvTitleName.setText("房屋账单"); group = new ArrayList (); child = new ArrayList >(); beans = new ArrayList<>(); addInfo("高层物业费", new String[]{"账单周期", "账单日"}, false); addInfo("电梯费", new String[]{"电梯费", "电费"}, false); billsExpandListView = new BillsExpandListView(context, group, child, beans); expanfListView.setAdapter(billsExpandListView); test.add("100"); test.add("200"); } public void addInfo(String g, String[] c, boolean b) { group.add(g); beans.add(new CheckListViewBean(b)); List
item = new ArrayList<>(); for (int i = 0; i < c.length; i++) { item.add(c[i]); } child.add(item); } @OnClick({R.id.rlBack, R.id.tvClickAll, R.id.tvjiaofei}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.rlBack: finish(); break; case R.id.tvClickAll: if (choose) { for (int i = 0; i < beans.size(); i++) { beans.get(i).checked = true; } Drawable drawableLeft = getResources().getDrawable( R.drawable.bills_add_z); tvClickAll.setCompoundDrawablesWithIntrinsicBounds(drawableLeft, null, null, null); billsExpandListView.notifyDataSetChanged(); int sums = 0; for (int i = 0; i < test.size(); i++) { int j = Integer.parseInt(test.get(i)); sums += j; } tvJine.setText(sums + ""); choose = false; } else { for (int i = 0; i < beans.size(); i++) { beans.get(i).checked = false; } Drawable drawableLeft = getResources().getDrawable( R.drawable.bills_add); tvClickAll.setCompoundDrawablesWithIntrinsicBounds(drawableLeft, null, null, null); billsExpandListView.notifyDataSetChanged(); tvJine.setText("0"); choose = true; } break; case R.id.tvjiaofei: break; } } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } @Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(MessageEvent event) { if (event.getType().equals("账单")) { btnOperateList(); } } public void btnOperateList() { List ids = new ArrayList<>(); for (int i = 0; i < beans.size(); i++) { if (beans.get(i).checked) { ids.add(test.get(i)); } if (!beans.get(i).checked) {//设置如果有一个项没选就取消全选 Drawable drawableLeft = getResources().getDrawable( R.drawable.bills_add); tvClickAll.setCompoundDrawablesWithIntrinsicBounds(drawableLeft, null, null, null); } } if (ids.size() == group.size()) {//把选中的添加到一个集合 然后用选中集合的size和总数据的size对比 相同的话就证明是全选了 Drawable drawableLeft = getResources().getDrawable( R.drawable.bills_add_z); tvClickAll.setCompoundDrawablesWithIntrinsicBounds(drawableLeft, null, null, null); } int sums = 0;//计算list中数据求和 for (int i = 0; i < ids.size(); i++) { int j = Integer.parseInt(ids.get(i)); sums += j; } tvJine.setText(sums + ""); } @Override public boolean dispatchTouchEvent(MotionEvent event) { if (mPopWindow != null && mPopWindow.isShowing()) { return false; } return super.dispatchTouchEvent(event); } }
2.BillsExpandListView
private Context context; Listgroup; List > child; List
beans; public BillsExpandListView(Context context, List group, List > child, List
beans) { this.context = context; this.group = group; this.child = child; this.beans = beans; } @Override public int getGroupCount() { return group.size(); } @Override public int getChildrenCount(int groupPosition) { return child.size(); } @Override public Object getGroup(int groupPosition) { return group.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return child.get(groupPosition).get(childPosition); } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return false; } @Override public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { final GroupViewHolder groupViewHolder; if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.partent_item, parent, false); groupViewHolder = new GroupViewHolder(); groupViewHolder.tvName = convertView.findViewById(R.id.tvName); groupViewHolder.tvMoney = convertView.findViewById(R.id.tvMoney); groupViewHolder.ivJiantou = convertView.findViewById(R.id.ivJiantou); groupViewHolder.checkbox = convertView.findViewById(R.id.checkbox); convertView.setTag(groupViewHolder); } else { groupViewHolder = (GroupViewHolder) convertView.getTag(); } groupViewHolder.tvName.setText(group.get(groupPosition)); // 根据当前父条目的展开状态来设置不同的图片 if (isExpanded) { // 条目未展开,设置向上的箭头 groupViewHolder.ivJiantou.setImageDrawable(context.getResources() .getDrawable(R.drawable.bills_up)); } else { // 条目展开,设置向下的箭头 groupViewHolder.ivJiantou.setImageDrawable(context.getResources() .getDrawable(R.drawable.bills_dwon)); } groupViewHolder.checkbox.setChecked(beans.get(groupPosition).checked); groupViewHolder.checkbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (beans.get(groupPosition).checked) { beans.get(groupPosition).checked = false; } else { beans.get(groupPosition).checked = true; } EventBus.getDefault().post(new MessageEvent("账单", "")); } }); return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ChildViewHolder childViewHolder; if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.child_item, parent, false); childViewHolder = new ChildViewHolder(); childViewHolder.tvName = convertView.findViewById(R.id.tvName); childViewHolder.tvTime = convertView.findViewById(R.id.tvTime); convertView.setTag(childViewHolder); } else { childViewHolder = (ChildViewHolder) convertView.getTag(); } childViewHolder.tvName.setText(child.get(groupPosition).get(childPosition)); return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } static class GroupViewHolder { TextView tvName, tvMoney; ImageView ivJiantou; CheckBox checkbox; } static class ChildViewHolder { TextView tvName, tvTime; }
3.CheckListViewBean
public class CheckListViewBean { public boolean checked; public CheckListViewBean(boolean check) { checked = check; } }
4.partent_item
5.child_item
6.activity_housing_bills
7.MessageEvent
package com.tsq.junbanpt.aiui.bean; public class MessageEvent { private String type; private String contect; public MessageEvent(String type, String contect) { this.type = type; this.contect = contect; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getContect() { return contect; } public void setContect(String contect) { this.contect = contect; } }
8.用到eventbus
implementation 'org.greenrobot:eventbus:3.1.1'