//请求数据就不多说了
package com.whk.moni.view; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.CheckBox; import android.widget.ExpandableListView; import android.widget.TextView; import com.whk.moni.R; import com.whk.moni.adapter.ExListAdapter; import com.whk.moni.adapter.TuiJianAdapter; import com.whk.moni.adapter.TuiJianAdapter.TuiJianClick; import com.whk.moni.bean.MainBean; import com.whk.moni.bean.QueryCarBean; import com.whk.moni.inter.MainView; import com.whk.moni.inter.QueryView; import com.whk.moni.presenter.MyMainPresenter; import com.whk.moni.presenter.MyQueryPresenter; import org.greenrobot.eventbus.EventBus; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.Unbinder; public class CarFragment extends Fragment implements QueryView, MainView, TuiJianClick, ExListAdapter.onItemLint { @BindView(R.id.nianji) TextView nianji; @BindView(R.id.exListView) ExpandableListView exListView; @BindView(R.id.car_hj) TextView carHj; Unbinder unbinder; @BindView(R.id.car_tuijian) RecyclerView carTuijian; @BindView(R.id.car_js) Button carJs; @BindView(R.id.car_ck) CheckBox carCk; private MyQueryPresenter myQueryPresenter; private List<QueryCarBean.DataBean> list; private ExListAdapter adapter; private MyMainPresenter myMainPresenter; private List<MainBean.TuijianBean.ListBean> list1; private int uid; private int pid; private List<QueryCarBean.DataBean> bigList = new ArrayList(); @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.car_fragment, container, false); unbinder = ButterKnife.bind(this, view); myMainPresenter = new MyMainPresenter(); myMainPresenter.createView(this); myMainPresenter.getMainView(); myQueryPresenter = new MyQueryPresenter(this); SharedPreferences user = getActivity().getSharedPreferences("user", Context.MODE_PRIVATE); uid = user.getInt("uid", 0); if (uid == 0) { getActivity().startActivity(new Intent(getActivity(), MainActivity.class)); } else { myQueryPresenter.getQueryView(uid + "", "android"); exListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Intent intent = new Intent(getActivity(), XiangQingView.class); pid = list.get(groupPosition).getList().get(childPosition).getPid(); //Log.d("--", "onChildClick: "+pid); intent.putExtra("pid", pid); startActivity(intent); return false; } }); } carCk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(carCk.isChecked()){ for (int i = 0; i < list.size(); i++) { QueryCarBean.DataBean dataBean = list.get(i); dataBean.setCk(true); List<QueryCarBean.ItemBean> beanList = dataBean.getList(); for (int j = 0; j < beanList.size(); j++) { beanList.get(j).setCheaed(true); } } }else{ for (int i = 0; i < list.size(); i++) { QueryCarBean.DataBean dataBean = list.get(i); dataBean.setCk(false); List<QueryCarBean.ItemBean> beanList = dataBean.getList(); for (int j = 0; j < beanList.size(); j++) { beanList.get(j).setCheaed(false); } } } setPrices(); } }); return view; } @Override public void qSuccess(QueryCarBean queryCarBean) { list = queryCarBean.getData(); bigList.clear(); bigList.addAll(list); Log.d("--", "qSuccess: " + list.size()); getExListAdapter(); for (int i = 0; i < list.size(); i++) { exListView.expandGroup(i); } } @Override public void onDestroyView() { super.onDestroyView(); EventBus.getDefault().unregister(this); myMainPresenter.deseView(); unbinder.unbind(); } @OnClick({R.id.car_fh, R.id.car_ck, R.id.car_js}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.car_fh: break; case R.id.car_ck: break; case R.id.car_js: break; } } @Override public void success(MainBean mainBean) { list1 = mainBean.getTuijian().getList(); StaggeredGridLayoutManager staggeredGridLayoutManager1 = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); carTuijian.setLayoutManager(staggeredGridLayoutManager1); TuiJianAdapter tAdapter = new TuiJianAdapter(getActivity(), list1); carTuijian.setAdapter(tAdapter); tAdapter.getTuiJianClick(this); } @Override public void error(Throwable t) { } @Override public void tjClick(int i) { Intent intent = new Intent(getActivity(), XiangQingView.class); int pid = list1.get(i).getPid(); intent.putExtra("pid", pid); startActivity(intent); } @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); myQueryPresenter.getQueryView(uid + "", "android"); } @Override public void childChecked(int i, int i1, boolean checked) { List<QueryCarBean.ItemBean> itemBeans = list.get(i).getList(); itemBeans.get(i1).setCheaed(checked); boolean b = setGroupOrCheld(i); if (b) { list.get(i).setCk(true); } else { list.get(i).setCk(false); } setPrices(); } @Override public void groupChecked(int i, boolean checked) { QueryCarBean.DataBean dataBean = list.get(i); dataBean.setCk(checked); List<QueryCarBean.ItemBean> beanList = dataBean.getList(); for (int j = 0; j < beanList.size(); j++) { if (list.get(i).isCk()) { beanList.get(j).setCheaed(true); } else { beanList.get(j).setCheaed(false); } } setPrices(); } @Override public void addNums(int i, int i1) { List<QueryCarBean.ItemBean> dataBean = list.get(i).getList(); int num1 = dataBean.get(i1).getNum(); num1++; dataBean.get(i1).setNum(num1); setPrices(); } @Override public void deleteNums(int i, int i1) { List<QueryCarBean.ItemBean> dataBean = list.get(i).getList(); int num1 = dataBean.get(i1).getNum(); num1--; dataBean.get(i1).setNum(num1); setPrices(); } //计算加钱方法 public void setPrices() { int price = 0; int num = 0; for (int i = 0; i < list.size(); i++) { List<QueryCarBean.ItemBean> beanList = list.get(i).getList(); for (int j = 0; j < beanList.size(); j++) { if (beanList.get(j).isCheaed()) { price += beanList.get(j).getNum() * beanList.get(j).getPrice(); num += beanList.get(j).getNum(); } } } carHj.setText("总价:¥" + price); carJs.setText("结算(" + num + ")"); getExListAdapter(); } public boolean setGroupOrCheld(int i) { List<QueryCarBean.ItemBean> beanList = list.get(i).getList(); for (int j = 0; j < beanList.size(); j++) { if (!beanList.get(j).isCheaed()) { return false; } } return true; } private void getExListAdapter() { if (adapter == null) { adapter = new ExListAdapter(getActivity(), bigList); exListView.setAdapter(adapter); adapter.setItemLint(this); } else { adapter.notifyDataSetChanged(); } } }
//适配器
package com.whk.moni.adapter; import android.content.Context; import android.support.v4.app.FragmentActivity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.bumptech.glide.Glide; import com.whk.moni.R; import com.whk.moni.bean.QueryCarBean; import com.whk.moni.view.AddDeleteView; import org.w3c.dom.Text; import java.util.List; public class ExListAdapter extends BaseExpandableListAdapter { Context context; List<QueryCarBean.DataBean> list; public ExListAdapter(Context context, List<QueryCarBean.DataBean> list) { this.list=list; this.context=context; } @Override public int getGroupCount() { return list.size(); } @Override public int getChildrenCount(int groupPosition) { return list.get(groupPosition).getList().size(); } @Override public Object getGroup(int groupPosition) { return list.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return list.get(groupPosition).getList().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 gvholder; if (convertView==null){ convertView=View.inflate(context, R.layout.group_layout,null); gvholder=new groupViewHolder(); gvholder.gr_ck=convertView.findViewById(R.id.gr_ck); gvholder.gr_name=convertView.findViewById(R.id.gr_name); convertView.setTag(gvholder); }else { gvholder= (groupViewHolder) convertView.getTag(); } QueryCarBean.DataBean dataBean = list.get(groupPosition); gvholder.gr_name.setText(dataBean.getSellerName()); gvholder.gr_ck.setChecked(dataBean.isCk()); gvholder.gr_ck.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { lint.groupChecked(groupPosition,gvholder.gr_ck.isChecked()); } }); return convertView; } @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { final ChildViewHolder cHilder; if (convertView==null){ convertView=View.inflate(context,R.layout.item_shopcart_product,null); cHilder=new ChildViewHolder(); cHilder.cbChild = convertView.findViewById(R.id.check_box); cHilder.tv_intro = convertView.findViewById(R.id.tv_intro); cHilder.imgIcon = convertView.findViewById(R.id.iv_adapter_list_pic); cHilder.tv_price = convertView.findViewById(R.id.tv_price); cHilder.tv_del = convertView.findViewById(R.id.tv_goods_delete); cHilder.tv_num = convertView.findViewById(R.id.tv_buy_num); cHilder.ll_edtor = convertView.findViewById(R.id.ll_edtor); cHilder.rl_no_edtor = convertView.findViewById(R.id.rl_no_edtor); cHilder.addNum = convertView.findViewById(R.id.add_Num); cHilder.deleteNum = convertView.findViewById(R.id.delete_Num); cHilder.showNum = convertView.findViewById(R.id.show_Num); convertView.setTag(cHilder); }else { cHilder= (ChildViewHolder) convertView.getTag(); } QueryCarBean.ItemBean itemBean = list.get(groupPosition).getList().get(childPosition); cHilder.cbChild.setChecked(itemBean.isCheaed()); cHilder.tv_intro.setText(itemBean.getTitle()); cHilder.tv_price.setText("¥"+itemBean.getPrice() ); if(itemBean.getNum() == 1){ cHilder.deleteNum.setEnabled(false); } else{ cHilder.deleteNum.setEnabled(true); } cHilder.tv_num.setText("X "+itemBean.getNum()); cHilder.showNum.setText(itemBean.getNum()+""); String[] split = itemBean.getImages().split("[|]"); Glide.with(context).load(split[0]).into(cHilder.imgIcon); cHilder.cbChild.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { lint.childChecked(groupPosition,childPosition,cHilder.cbChild.isChecked()); } }); cHilder.addNum.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { lint.addNums(groupPosition,childPosition); } }); cHilder.deleteNum.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { lint.deleteNums(groupPosition,childPosition); } }); return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } class groupViewHolder{ CheckBox gr_ck; TextView gr_name; } class ChildViewHolder{ CheckBox cbChild; TextView tv_intro; ImageView imgIcon; TextView tv_price; TextView tv_del,showNum; LinearLayout ll_edtor; RelativeLayout rl_no_edtor; TextView tv_num; Button addNum,deleteNum; } private onItemLint lint; public void setItemLint(onItemLint lint){ this.lint = lint; } public interface onItemLint{ //子项复选框状态 void childChecked(int i,int i1,boolean checked); //父项复选框状态 void groupChecked(int i,boolean checked); //加数量 void addNums(int i, int i1); //加数量 void deleteNums(int i, int i1); } }
//group布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/gr_ck"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/gr_name"/> </LinearLayout>
//child布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="#CCCCCC" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <CheckBox android:focusable="false" android:id="@+id/check_box" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="10dp" android:layout_marginRight="4dp" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:gravity="center" android:minHeight="64dp" android:minWidth="32dp" android:textAppearance="?android:attr/textAppearanceLarge" android:visibility="visible" /> <ImageView android:id="@+id/iv_adapter_list_pic" android:layout_width="85dp" android:layout_height="85dp" android:layout_marginBottom="15dp" android:layout_marginTop="13dp" android:scaleType="centerCrop" /> <RelativeLayout android:id="@+id/rl_no_edtor" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="13dp" > <TextView android:id="@+id/tv_intro" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:layout_marginTop="20dp" android:ellipsize="end" android:maxLines="2" android:text="aa" android:textColor="#000" android:singleLine="true" /> <TextView android:id="@+id/tv_color_size" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bb" android:layout_marginTop="5dp" android:textColor="#000" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_marginBottom="20dp" android:layout_alignParentStart="true"> <TextView android:id="@+id/tv_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:singleLine="true" android:text="cc" android:textColor="#000" android:textStyle="bold" /> <LinearLayout android:id="@+id/tv_discount_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/tv_price" android:orientation="horizontal" > <Button android:layout_width="35dp" android:layout_height="35dp" android:id="@+id/delete_Num" android:text="-"/> <TextView android:layout_width="20dp" android:layout_height="35dp" android:id="@+id/show_Num" android:text="1"/> <Button android:layout_width="35dp" android:layout_height="35dp" android:id="@+id/add_Num" android:text="+" /> </LinearLayout> <TextView android:id="@+id/tv_buy_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginRight="20dp" android:layout_alignParentRight="true" android:text="X 1" android:textColor="#000" /> </RelativeLayout> </RelativeLayout> <LinearLayout android:id="@+id/ll_edtor" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="13dp" android:visibility="gone" android:orientation="horizontal"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <RelativeLayout android:id="@+id/ll_change_num" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="20dp" android:orientation="horizontal"> <com.whk.moni.view.AddDeleteView android:id="@+id/adv_main" android:layout_width="wrap_content" android:layout_height="wrap_content"> app:left_text="-" app:middle_text="3" app:right_text="+" </com.whk.moni.view.AddDeleteView> </RelativeLayout> <TextView android:id="@+id/tv_colorsize" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:gravity="center" android:text="aa" android:layout_gravity="left" android:textColor="#000"/> </LinearLayout> <TextView android:id="@+id/tv_goods_delete" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="3" android:text="删除" android:background="#ecb74c" android:gravity="center" android:layout_gravity="center" android:textColor="#fff"/> </LinearLayout> </LinearLayout> </LinearLayout>
//主布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <ImageView android:src="@drawable/fh" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/car_fh" /> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="购物车" android:textSize="22dp"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:padding="10dp" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/nianji" android:text="编辑"/> </LinearLayout> <com.whk.moni.view.CustomExpandableListView android:id="@+id/exListView" android:layout_width="match_parent" android:layout_height="match_parent" android:childIndicator="@null" android:groupIndicator="@null" > </com.whk.moni.view.CustomExpandableListView> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:background="#fff" android:id="@+id/car_tuijian"></android.support.v7.widget.RecyclerView> </LinearLayout> </ScrollView> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:background="#fff" android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" android:orientation="horizontal"> <CheckBox android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/car_ck" android:text="全选"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/car_hj" android:text="合计"/> <View android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/car_js" android:text="结算" android:background="#f00"/> </LinearLayout> </RelativeLayout> </RelativeLayout>