implementation 'org.greenrobot:eventbus:3.1.1'
private ExpandableListView elv;
private CheckBox checkbox2;
private TextView tvPrice;
private TextView tvNum;
private View inflate;
private String token;
private FourPersenter fourPersenter;
private int uid;
private SmartRefreshLayout smart;
private List<Jiesuan> listdate;
private List<ShoppingBean.DataBean> date;
private DeletePersenter deletePersenter;
private SharedPreferences user;
private IBasePersenter iBasePersenter;
private static final String TAG = "FourFragment";
String str = "https://www.zhaoapi.cn/product/getCarts?uid=";
private List<ShoppingBean.DataBean> data;
private List<ShoppingBean.DataBean> dataall=new ArrayList<>();
private ShoppingAdapter shoppingAdapter;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
Gson gson = new Gson();
String obj = (String) msg.obj;
if (obj!=null){
ShoppingBean shoppingBean = gson.fromJson(obj, ShoppingBean.class);
if (shoppingBean != null) {
dataall.clear();
data = shoppingBean.getData();
if (data!=null){
dataall.addAll(data);
if (shoppingAdapter == null) {
shoppingAdapter = new ShoppingAdapter(dataall, getActivity());
elv.setAdapter(shoppingAdapter);
elv.setGroupIndicator(null);
for (int i = 0; i < shoppingAdapter.getGroupCount(); i++) {
elv.expandGroup(i);
}
return;
} else {
shoppingAdapter.getDate(data);
shoppingAdapter.notifyDataSetChanged();
}
}
}
}
else {
//jlj
}
}
}
};
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
inflate = inflater.inflate(R.layout.shopping, container, false);
EventBus.getDefault().register(this);
initView();
return inflate;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
initView();
}
private void initView() {
user = getActivity().getSharedPreferences("user", Context.MODE_PRIVATE);
boolean bool = user.getBoolean("bool", false);
uid = user.getInt("uid", 1);
token = user.getString("token", "s");
elv = (ExpandableListView) inflate.findViewById(R.id.elv);
checkbox2 = (CheckBox) inflate.findViewById(R.id.checkbox2);
tvPrice = (TextView) inflate.findViewById(R.id.tv_price);
tvNum = (TextView) inflate.findViewById(R.id.tv_num);
smart = inflate.findViewById(R.id.smart);
deletePersenter = new DeletePersenter();
deletePersenter.LoadFormDate(this);
//点击group可以无反应
elv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
// TODO Auto-generated method stub
return true;
}
});
checkbox2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
shoppingAdapter.selectAll(checkbox2.isChecked());
shoppingAdapter.selectAllCount();
}
});
smart.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
refreshLayout.finishLoadMore(2000);
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
refreshLayout.finishRefresh(2000);
getDate();
}
});
fourPersenter = new FourPersenter();
fourPersenter.loadDate(this);
if (bool) {
getDate();
} else {
Toast.makeText(getActivity(), "哥们,请登录", Toast.LENGTH_SHORT).show();
}
}
public void getDate(){
fourPersenter.getDate(str + uid );
}
@Override
public void onResume() {
super.onResume();
initView();
getDate();
}
@Override
public void onscuess(String s) {
if (s.equals("")) {
} else {
Message message = handler.obtainMessage();
message.what = 1;
message.obj = s;
handler.sendMessage(message);
}
}
@Override
public void onscuess() {
Toast.makeText(getActivity(), "商品已删除", Toast.LENGTH_SHORT).show();
fourPersenter.getDate(str+ uid );
shoppingAdapter.notifyDataSetChanged();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void itDate(ENventBus eventBus) {
checkbox2.setChecked(eventBus.isQuanxuan());
tvPrice.setText(eventBus.getPrice() + "");
tvNum.setText("结算" + eventBus.getCount());
HashMap<String, String> man = new HashMap<>();
man.put("uid", uid + "");
man.put("pid", eventBus.getPid() + "");
man.put("token", token);
deletePersenter.getDAte(man);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void itclass(EnventClass eventBus) {
final List<ShoppingBean.DataBean> list = eventBus.getList();
listdate = new ArrayList<>();
tvNum.setOnClickListener(new View.OnClickListener() {
private Jiesuan jiesuan;
@Override
public void onClick(View view) {
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.get(i).getList().size(); j++) {
if (list.get(i).getList().get(j).isIscheck()) {
jiesuan = new Jiesuan(list.get(i).getSellerName(), list.get(i).getList().get(j).getImages(), list.get(i).getList().get(j).getTitle(), list.get(i).getList().get(j).getPrice() + "", list.get(i).getList().get(j).getNum() + "");
listdate.add(jiesuan);
}
}
}
EnventDingdan enventDingdan = new EnventDingdan();
enventDingdan.setListdate(listdate);
EventBus.getDefault().postSticky(enventDingdan);
Intent intent = new Intent(getActivity(), Dress.class);
startActivity(intent);
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}
adapter
public class ShoppingAdapter extends BaseExpandableListAdapter implements View.OnClickListener {
List<ShoppingBean.DataBean> list;
Context context;
private ENventBus eNventBus;
ViewHoderChild viewHoderChild;
public ShoppingAdapter(List<ShoppingBean.DataBean> list, Context context) {
this.list = list;
this.context = context;
}
public void getDate(List<ShoppingBean.DataBean> list){
this.list=list;
}
@Override
public int getGroupCount() {
return list.size();
}
@Override
public int getChildrenCount(int i) {
return list.get(i).getList().size();
}
@Override
public Object getGroup(int i) {
return list.get(i);
}
@Override
public Object getChild(int i, int i1) {
return list.get(i).getList().get(i1);
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
ViewHoderGroup viewHoderGroup;
if (view == null) {
view = View.inflate(context, R.layout.shopp_group, null);
viewHoderGroup = new ViewHoderGroup();
viewHoderGroup.cbParent = (CheckBox) view.findViewById(R.id.cb_parent);
viewHoderGroup.tvSign = (TextView) view.findViewById(R.id.tv_sign);
view.setTag(viewHoderGroup);
} else {
viewHoderGroup = (ViewHoderGroup) view.getTag();
}
viewHoderGroup.cbParent.setChecked(list.get(i).isIscheck());
viewHoderGroup.tvSign.setText(list.get(i).getSellerName());
String str = i + "";
viewHoderGroup.cbParent.setOnClickListener(this);
viewHoderGroup.cbParent.setTag(str);
return view;
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
if (view == null) {
view = View.inflate(context, R.layout.shopp_child, null);
viewHoderChild = new ViewHoderChild();
viewHoderChild.cbChild = (CheckBox) view.findViewById(R.id.cb_child);
viewHoderChild.tvTel = (TextView) view.findViewById(R.id.tv_tel);
viewHoderChild.tvContent = (TextView) view.findViewById(R.id.tv_content);
viewHoderChild.tvPri = (TextView) view.findViewById(R.id.tv_pri);
viewHoderChild.ivDel = (ImageView) view.findViewById(R.id.iv_del);
viewHoderChild.tvNum = (TextView) view.findViewById(R.id.iv_num);
viewHoderChild.ivAdd = (ImageView) view.findViewById(R.id.iv_add);
viewHoderChild.shoppimg = (ImageView) view.findViewById(R.id.shoppimg);
viewHoderChild.delete1 = (TextView) view.findViewById(R.id.delete1);
view.setTag(viewHoderChild);
} else {
viewHoderChild = (ViewHoderChild) view.getTag();
}
viewHoderChild.cbChild.setChecked(list.get(i).getList().get(i1).isIscheck());
viewHoderChild.tvTel.setText(list.get(i).getList().get(i1).getTitle());
viewHoderChild.tvContent.setText(list.get(i).getList().get(i1).getSubhead());
viewHoderChild.tvPri.setText(list.get(i).getList().get(i1).getPrice() + "");
viewHoderChild.tvNum.setText(list.get(i).getList().get(i1).getNum() + "");
viewHoderChild.ivAdd.setOnClickListener(this);
viewHoderChild.ivDel.setOnClickListener(this);
viewHoderChild.delete1.setOnClickListener(this);
String images = list.get(i).getList().get(i1).getImages();
String[] split = images.split("\\|");
for (int j = 0; j < split.length; j++) {
Glide.with(context).load(split[j]).into(viewHoderChild.shoppimg);
}
String tag = i + "," + i1;
viewHoderChild.cbChild.setTag(tag);
viewHoderChild.cbChild.setOnClickListener(this);
viewHoderChild.delete1.setTag(tag);
return view;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return false;
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.cb_child:
CheckBox cbChild = (CheckBox) view;
String i = cbChild.getTag().toString();
String[] split = i.split(",");
Integer group = Integer.valueOf(split[0]);
Integer child = Integer.valueOf(split[1]);
list.get(group).getList().get(child).setIscheck(cbChild.isChecked());
EnventClass enventClass = new EnventClass();
enventClass.setList(list);
EventBus.getDefault().post(enventClass);
boolean flag = true;
for (int j = 0; j < list.get(group).getList().size(); j++) {
if (!list.get(group).getList().get(j).isIscheck()) {
flag = false;
}
}
selectAllCount();
list.get(group).setIscheck(flag);
notifyDataSetChanged();
break;
case R.id.cb_parent:
CheckBox cb_parent = (CheckBox) view;
String s = cb_parent.getTag().toString();
Integer paentgroup = Integer.valueOf(s);
list.get(paentgroup).setIscheck(cb_parent.isChecked());
boolean ischeck = list.get(paentgroup).isIscheck();
//点击group child全选
//group改变 chikd随着改变就行 所以把group的boolren赋给child
for (int j = 0; j < list.get(paentgroup).getList().size(); j++) {
list.get(paentgroup).getList().get(j).setIscheck(ischeck);
notifyDataSetChanged();
}
boolean groupflag = true;
for (int j = 0; j < list.size(); j++) {
if (!list.get(j).isIscheck()) {
// ENventBus eNventBus = new ENventBus();
// eNventBus.setQuanxuan(true);
groupflag = false;
}
eNventBus = new ENventBus();
eNventBus.setQuanxuan(groupflag);
EventBus.getDefault().post(eNventBus);
selectAllCount();
notifyDataSetChanged();
}
break;
case R.id.iv_add:
break;
case R.id.delete1:
TextView del = (TextView) view;
String ii = del.getTag().toString();
String[] split1 = ii.split(",");
Integer group1 = Integer.valueOf(split1[0]);
Integer child1 = Integer.valueOf(split1[1]);
eNventBus = new ENventBus();
eNventBus.setPid(list.get(group1).getList().get(child1).getPid());
EventBus.getDefault().post(eNventBus);
// 删除子条目中的数据
// if (子条目.size() == 0) {
// 删除父条目
// }
// notifyDataSetChanged();
break;
}
}
public void selectAllCount() {
int Count = 0;
int pricecount = 0;
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.get(i).getList().size(); j++) {
if (list.get(i).getList().get(j).isIscheck()) {
double price = list.get(i).getList().get(j).getPrice();
int num = list.get(i).getList().get(j).getNum();
pricecount += price;
Count += num;
}
}
}
eNventBus = new ENventBus();
eNventBus.setCount(Count);
eNventBus.setPrice(pricecount * Count);
EventBus.getDefault().post(eNventBus);
}
class ViewHoderChild {
private CheckBox cbChild;
private TextView tvTel;
private TextView tvContent;
private TextView tvTime;
private TextView tvPri;
private ImageView ivDel;
private TextView tvNum;
private ImageView ivAdd;
private TextView tvDel;
private ImageView shoppimg;
private TextView delete1;
}
class ViewHoderGroup {
private CheckBox cbParent;
private TextView tvSign;
private TextView tvNumber;
}
public void selectAll(boolean flag) {
for (int j = 0; j < list.size(); j++) {
for (int i = 0; i < list.get(j).getList().size(); i++) {
list.get(j).setIscheck(flag);
list.get(j).getList().get(i).setIscheck(flag);
notifyDataSetChanged();
}
}
notifyDataSetChanged();
}
}
eventbus:
public class ENventBus {
private boolean quanxuan;
private int count;
private int price;
private int pid;
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public boolean isQuanxuan() {
return quanxuan;
}
public void setQuanxuan(booleanquanxuan) {
this.quanxuan = quanxuan;
}
}