XiangQinActivity:详情页面
public class XiangQingActivity extends AppCompatActivity implements XiangQingPrestener.IXiangqingView, AddCartPrestener.IAddCartView { @BindView(R.id.simpleDetails) SimpleDraweeView simpleDetails; @BindView(R.id.title) TextView title; @BindView(R.id.price) TextView price; @BindView(R.id.addCart) Button addCart; private String pid; private AddCartPrestener addCartPrestener; private XiangQingPrestener xiangQingPrestener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xiang_qing); ButterKnife.bind(this); addCartPrestener = new AddCartPrestener(this); xiangQingPrestener = new XiangQingPrestener(this); //得到pid pid = getIntent().getStringExtra("pid"); xiangQingPrestener.getData(pid); } @OnClick(R.id.addCart) public void onViewClicked() { addCartPrestener.getData(pid); } @Override public void success(DetailsBean.DataBean list) { //设置数据 String[] split = list.getImages().split("\\|"); simpleDetails.setImageURI(Uri.parse(split[0])); title.setText(list.getTitle()); price.setText(list.getPrice() + ""); } @Override public void success(String s) { if (s.equals("加购成功")) { Intent intent = new Intent(XiangQingActivity.this, ShopCartActivity.class); intent.putExtra("pid", pid); startActivity(intent); Toast.makeText(XiangQingActivity.this, s, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(XiangQingActivity.this, s, Toast.LENGTH_SHORT).show(); } } //防止内存泄漏 @Override protected void onDestroy() { super.onDestroy(); xiangQingPrestener.detach(); } }xiangqing_activity:详情页面布局
RelativeLayout:
<LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"> <!--<VideoView--> <!--android:layout_width="match_parent"--> <!--android:layout_height="180dp"--> <!--android:id="@+id/videoView"--> <!--/>--> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/simpleDetails" android:layout_width="match_parent" android:layout_height="400dp" /> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" android:textSize="20sp" /> <TextView android:textColor="#FEB016" android:id="@+id/price" android:layout_marginTop="5dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="价格" android:textSize="20sp" /> </LinearLayout> <LinearLayout android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_marginTop="10dp" android:orientation="horizontal" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content"> <ImageView android:layout_width="0dp" android:src="@mipmap/ic_launcher" android:layout_height="30dp" android:layout_weight="1" /> <ImageView android:layout_width="0dp" android:src="@mipmap/ic_launcher" android:layout_height="30dp" android:layout_weight="1" /> <ImageView android:layout_width="0dp" android:src="@mipmap/ic_launcher" android:layout_height="30dp" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:layout_marginLeft="25dp" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/addCart" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#fff" android:background="#ff0" android:text="加入购物车" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#fff" android:background="#f00" android:text="立即购买" /> </LinearLayout> </LinearLayout>XiangQinModel:
public class XiangQingModel { //详情页数据 public void getData(String pid, final IXiangqingModel iXiangqingModel){ Map<String,String> map = new HashMap<>(); map.put("pid",pid); map.put("source","android"); RetrofitManager.get("product/getProductDetail",map, new BaseObserver<DetailsBean>() { @Override public void success(DetailsBean detailsBean) { if(iXiangqingModel!=null){ iXiangqingModel.success(detailsBean); } } @Override public void failure(int code) { } }); }
public interface IXiangqingModel { void success(DetailsBean deatails); } }XiangQinPresenter
public class XiangQingPrestener { IXiangqingView iXiangqingView; XiangQingModel xiangQingModel; public XiangQingPrestener(IXiangqingView iXiangqingView) { this.iXiangqingView = iXiangqingView; xiangQingModel=new XiangQingModel(); } public void getData(String pid){ xiangQingModel.getData(pid, new XiangQingModel.IXiangqingModel() { @Override public void success(DetailsBean deatails) { if(iXiangqingView!=null){ iXiangqingView.success(deatails.getData()); } } }); } public interface IXiangqingView{ void success(DetailsBean.DataBean list); } public void detach(){ iXiangqingView=null; } }
AddCartModel:
public class AddCartModel { //添加购物车 public void getData(String pid, final IAddcartModel iAddcartModel){ Map<String, String> map = new HashMap<>(); map.put("pid",pid); map.put("uid","11738"); map.put("source","android"); RetrofitManager.get("product/addCart",map, new BaseObserver<AddCartBean>() { @Override public void success(AddCartBean addCartBean) { if(iAddcartModel!=null){ iAddcartModel.success(addCartBean); } } @Override public void failure(int code) { } }); } public interface IAddcartModel{ void success(AddCartBean addCartBean); } }AddCartPresenter:
public class AddCartPrestener { IAddCartView iAddCartView; AddCartModel addCartModel; public AddCartPrestener(IAddCartView iAddCartView) { this.iAddCartView = iAddCartView; addCartModel=new AddCartModel(); } public void getData(String pid){ addCartModel.getData(pid, new AddCartModel.IAddcartModel() { @Override public void success(AddCartBean addCartBean) { if(iAddCartView!=null){ iAddCartView.success(addCartBean.getMsg()); } } }); } public interface IAddCartView { void success(String s); } }ShopCartActivity:购物车页面
public class ShopCartActivity extends AppCompatActivity implements ShopCartPrestener.ICartView { @BindView(R.id.bianji) TextView bianji; @BindView(R.id.linear2) RelativeLayout linear2; @BindView(R.id.expandView) ExpandableListView expandView; @BindView(R.id.checkAll) CheckBox checkAll; @BindView(R.id.zprice) TextView zprice; @BindView(R.id.zcount) Button zcount; @BindView(R.id.linear) RelativeLayout linear; private ShopCartPrestener shopCartPrestener; private ElvAdapter elvAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shop_cart); ButterKnife.bind(this); shopCartPrestener = new ShopCartPrestener(this); shopCartPrestener.getData(); } @Override public void success(List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child) { elvAdapter = new ElvAdapter(ShopCartActivity.this, group, child); elvAdapter.setChangeListener(new ElvAdapter.ChangeListener() { @Override public void setState(boolean flag) { checkAll.setChecked(flag); } @Override public void setText(String price, String count) { zcount.setText("结算(" + count + ")"); zprice.setText("总计:" + price + "¥"); } }); expandView.setAdapter(elvAdapter); //默认展开 for (int i = 0; i < group.size(); i++) { expandView.expandGroup(i); } } @OnClick({R.id.checkAll, R.id.zcount}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.checkAll: elvAdapter.checkedAll(checkAll.isChecked()); break; case R.id.zcount: Intent intent = new Intent(ShopCartActivity.this,DingGoodsActivity.class); startActivity(intent); break; } } }activity_shop_cart:购物车布局:
Relati'veLayout:
<RelativeLayout android:id="@+id/linear2" android:layout_width="match_parent" android:layout_height="60dp" android:background="#000"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="购物车" android:textColor="#fff" android:textSize="20sp" /> <TextView android:id="@+id/bianji" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="10dp" android:layout_marginRight="10dp" android:text="编辑" android:textColor="#fff" /> </RelativeLayout> <ExpandableListView android:id="@+id/expandView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/linear" android:layout_below="@+id/linear2" android:groupIndicator="@null"></ExpandableListView> <RelativeLayout android:id="@+id/linear" android:layout_width="match_parent" android:layout_height="70dp" android:layout_alignParentBottom="true" android:background="#AAAAAA"> <CheckBox android:id="@+id/checkAll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="全选" /> <TextView android:id="@+id/zprice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="总计:0.0¥" /> <Button android:id="@+id/zcount" android:layout_width="100dp" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="#FF0000" android:text="结算(0)" android:textColor="#fff" /> </RelativeLayout>ShopCartModel:
public class ShopCartModel { //购物车的数据 public void getData(final IShopCart iCartModel){ Map<String,String> map=new HashMap<>(); map.put("uid","11738"); map.put("source","android"); RetrofitManager.get("product/getCarts",map, new BaseObserver<CartBean>() { @Override public void success(CartBean cartBean) { if(iCartModel!=null){ iCartModel.success(cartBean); } } @Override public void failure(int code) { } }); } public interface IShopCart { void success(CartBean cartBean); } }ShopCartPresenter:
public class ShopCartPrestener { ShopCartModel cartModel; ICartView iCartView; public ShopCartPrestener(ICartView iCartView) { this.iCartView = iCartView; cartModel=new ShopCartModel(); } public void getData(){ cartModel.getData(new ShopCartModel.IShopCart() { @Override public void success(CartBean cartBean) { //拿到一级二级数据 List<CartBean.DataBean> group = cartBean.getData(); List<List<CartBean.DataBean.ListBean>> child=new ArrayList<>(); for(int i=0;i<group.size();i++){ child.add(group.get(i).getList()); } if(iCartView!=null){ iCartView.success(group,child); } } }); } public interface ICartView { void success(List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child); } }DingGoodsActivity:
public class DingGoodsActivity extends AppCompatActivity { @BindView(R.id.imageView) ImageView imageView; @BindView(R.id.tabLayout) TabLayout tabLayout; @BindView(R.id.viewPager) ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ding_goods); ButterKnife.bind(this); viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { private String[] mTitles = new String[]{"全部", "待支付", "已支付", "已取消"}; @Override public Fragment getItem(int position) { if(position==1){ return new TwoFragment(); }else if(position==2){ return new ThreeFragment(); }else if(position==3){ return new FourFragment(); } return new OneFragment(); } @Override public int getCount() { return mTitles.length; } @Override public CharSequence getPageTitle(int position) { return mTitles[position]; } }); tabLayout.setupWithViewPager(viewPager); } @OnClick(R.id.imageView) public void onViewClicked() { MyPopupWindow.showPopupWindow(viewPager,DingGoodsActivity.this,imageView); } }activity_ding_goods:订单布局文件
<RelativeLayout android:layout_width="match_parent" android:layout_height="60dp" > <TextView android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="订单页面" /> <ImageView android:src="@mipmap/ic_launcher" android:layout_width="25dp" android:layout_height="25dp" android:id="@+id/imageView" android:layout_alignParentRight="true" android:layout_centerVertical="true" /> </RelativeLayout> <TextView android:layout_width="match_parent" android:layout_height="1dp" android:background="#000" /> <android.support.design.widget.TabLayout android:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="50dp" > </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager>fragment包:
OneFragment:
public class OneFragment extends Fragment { private RecyclerView recyclerView; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view=inflater.inflate(R.layout.one_fragment,container,false); recyclerView = view.findViewById(R.id.recyclerFragment); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //设置数据 DingPrestener dingPrestener=new DingPrestener(); Map<String, String> map = new HashMap<>(); map.put("uid","71"); map.put("page","1"); map.put("source","android"); RetrofitManager.get("product/getOrders",map, new BaseObserver<DingDBean>() { @Override public void success(DingDBean dingDBean) { recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); DingAdapter dingAdapter=new DingAdapter(getActivity(),dingDBean.getData()); recyclerView.setAdapter(dingAdapter); } @Override public void failure(int code) { } }); } }布局文件:
四个页面的布局相同:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerFragment" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </LinearLayout>
public class TwoFragment extends Fragment { private RecyclerView recyclerView; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.two_fragment,container,false); recyclerView = view.findViewById(R.id.recyclerFragment); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); DingPrestener dingPrestener=new DingPrestener(); dingPrestener.getData("1", "0", new DingPrestener.IDingView() { @Override public void success(DingDBean dingDBean) { //设置适配器 recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); DingAdapter dingAdapter=new DingAdapter(getActivity(),dingDBean.getData()); recyclerView.setAdapter(dingAdapter); } }); } }
public class ThreeFragment extends Fragment { private RecyclerView recyclerView; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.three_fragment,container,false); recyclerView = view.findViewById(R.id.recyclerFragment); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); DingPrestener dingPresenter = new DingPrestener(); dingPresenter.getData("1","1", new DingPrestener.IDingView() { @Override public void success(DingDBean dingDBean) { //设置适配器 recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); DingAdapter myDingAdapter = new DingAdapter(getActivity(),dingDBean.getData()); recyclerView.setAdapter(myDingAdapter); } }); } }
public class FourFragment extends Fragment{ private RecyclerView recyclerView; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.four_fragment,container,false); recyclerView = view.findViewById(R.id.recyclerFragment); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); DingPrestener dingPresenter = new DingPrestener(); dingPresenter.getData("1","2", new DingPrestener.IDingView() { @Override public void success(DingDBean dingDBean) { //设置适配器 recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); DingAdapter myDingAdapter = new DingAdapter(getActivity(),dingDBean.getData()); recyclerView.setAdapter(myDingAdapter); } }); } }DingModel:
public class DingModel { //订单的数据 public void getData(String page,String status, final IDingModel dingModuleListener){ Map<String, String> map = new HashMap<>(); map.put("uid","71"); map.put("page",page); map.put("status",status); //http://120.27.23.105/product/getOrders?uid=71&status=1 map.put("source","android"); RetrofitManager.get("product/getOrders", map, new BaseObserver<DingDBean>() { @Override public void success(DingDBean dingDBean) { if(dingModuleListener!=null){ dingModuleListener.success(dingDBean); } } @Override public void failure(int code) { } }); } public interface IDingModel{ void success(DingDBean dingDBean); } }DingPresenter:
public class DingPrestener { DingModel dingModel=new DingModel(); public void getData(String page,String status, final IDingView dingPresenterListener){ dingModel.getData(page,status, new DingModel.IDingModel() { @Override public void success(DingDBean dingDBean) { if(dingPresenterListener!=null){ dingPresenterListener.success(dingDBean); } } }); } public interface IDingView{ void success(DingDBean dingDBean); } }购物车的适配器:
public class ElvAdapter extends BaseExpandableListAdapter { Context context; List<CartBean.DataBean> group; List<List<CartBean.DataBean.ListBean>> child; private Holder1 holder1; private Holder2 holder2; public ElvAdapter(Context context, List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child) { this.context = context; this.group = group; this.child = child; } @Override public int getGroupCount() { return group.size(); } @Override public int getChildrenCount(int groupPosition) { return child.get(groupPosition).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) { if(convertView==null){ convertView = LayoutInflater.from(context).inflate(R.layout.item_expandable_listview, null); holder1 = new Holder1(); holder1.checkBox = convertView.findViewById(R.id.groupChecked); holder1.textview = convertView.findViewById(R.id.groupTitle); convertView.setTag(holder1); }else{ holder1 = (Holder1) convertView.getTag(); } //设置显示数据 holder1.textview.setText(group.get(groupPosition).getSellerName()); holder1.checkBox.setChecked(group.get(groupPosition).isgChecked()); //设置一级标题的点击事件 holder1.checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { boolean b = !group.get(groupPosition).isgChecked(); Toast.makeText(context,b+"",Toast.LENGTH_SHORT).show(); group.get(groupPosition).setgChecked(b); //拿到你点击孩子的父亲 List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition); //遍历看看他有几个孩子 for (int i=0;i<listBeans.size();i++){ listBeans.get(i).setcChecked(group.get(groupPosition).isgChecked()); } changeListener.setState(isGroup()); notifyDataSetChanged(); sum(); } }); return convertView; } @Override public View getChildView(final int groupPosition, final int childPosition, final boolean isLastChild, View convertView, ViewGroup parent) { if(convertView==null){ convertView = LayoutInflater.from(context).inflate(R.layout.item_listview, null); holder2 = new Holder2(); holder2.imageView = convertView.findViewById(R.id.simpleDraw); holder2.checkBox = convertView.findViewById(R.id.childChecked); holder2.title = convertView.findViewById(R.id.childTitle); holder2.miaoshu= convertView.findViewById(R.id.miaoShu); holder2.price = convertView.findViewById(R.id.childPrice); holder2.yprice = convertView.findViewById(R.id.childPriceY); holder2.linearLayout = convertView.findViewById(R.id.linearLayoutItem); holder2.customLinearLayout = convertView.findViewById(R.id.customLinearLayout); holder2.bt2=convertView.findViewById(R.id.bt_del); convertView.setTag(holder2); }else{ holder2 = (Holder2) convertView.getTag(); } final CartBean.DataBean.ListBean listBean = child.get(groupPosition).get(childPosition); //设置显示数据 holder2.checkBox.setChecked(listBean.iscChecked()); holder2.title.setText(listBean.getTitle()); holder2.price.setText("¥"+listBean.getPrice()); holder2.yprice.setText("¥"+listBean.getBargainPrice()); holder2.customLinearLayout.setText(listBean.getNum()+""); //中划线 holder2.yprice.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG); // 设置中划线并加清晰 holder2.yprice.setPaintFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG); holder2.miaoshu.setText(listBean.getSubhead()); String[] split = listBean.getImages().split("\\|"); Glide.with(context).load(split[0]).into(holder2.imageView); holder2.checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition); boolean b = !listBeans.get(childPosition).iscChecked(); listBeans.get(childPosition).setcChecked(b); boolean isno = isChildChange(listBeans); //设置一级的状态 group.get(groupPosition).setgChecked(isno); changeListener.setState(isChild()); notifyDataSetChanged(); sum(); } }); //加减号的点击事件 holder2.customLinearLayout.getCount(new CustomLinearLayout.CountListener() { @Override public void setCount(int i) { listBean.setNum(i); sum(); } }); holder2.bt2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //其实就是删除集合 List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition); if (listBeans.size() > 0) { listBeans.remove(childPosition); } if (listBeans.size() == 0) { child.remove(groupPosition); group.remove(groupPosition); } //刷新列表 notifyDataSetChanged(); } }); return convertView; } //计算的方法 public void sum(){ double price = 0; int count = 0; for (int i=0;i<group.size();i++){ List<CartBean.DataBean.ListBean> list = group.get(i).getList(); for (int j=0;j<list.size();j++){ if(list.get(j).iscChecked()){ price +=list.get(j).getPrice()*list.get(j).getNum(); count +=list.get(j).getNum(); } } } notifyDataSetChanged(); //接口回调 if(changeListener!=null) { changeListener.setText(price + "", count + ""); } } ChangeListener changeListener; public void setChangeListener(ChangeListener changeListener) { this.changeListener = changeListener; } //接口传值,去改变全选的状态,设置商品的数量价格 public interface ChangeListener{ void setState(boolean flag); void setText(String price,String count); } //子类点击改变全选状态 public boolean isChild(){ for (int i=0;i<group.size();i++){ List<CartBean.DataBean.ListBean> list = group.get(i).getList(); for (int j=0;j<list.size();j++){ if(!child.get(i).get(j).iscChecked()){ return false; } } } return true; } //父类点击改变全选的状态 public boolean isGroup(){ for (int i=0;i<group.size();i++){ if(!group.get(i).isgChecked()){ return false; } } return true; } //设置全选 public void checkedAll(boolean flag){ if(flag){ for (int i=0;i<group.size();i++){ List<CartBean.DataBean.ListBean> list = group.get(i).getList(); group.get(i).setgChecked(true); for (int j=0;j<list.size();j++){ child.get(i).get(j).setcChecked(true); } } }else{ for (int i=0;i<group.size();i++){ List<CartBean.DataBean.ListBean> list = group.get(i).getList(); group.get(i).setgChecked(false); for (int j=0;j<list.size();j++){ child.get(i).get(j).setcChecked(false); } } } notifyDataSetChanged(); sum(); } //如果有意子类没选中就将父类的状态改为true public boolean isChildChange( List<CartBean.DataBean.ListBean> listBeans){ for (int i=0;i<listBeans.size();i++){ if(!listBeans.get(i).iscChecked()){ return false; } } return true; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } class Holder1{ CheckBox checkBox; TextView textview; } class Holder2{ LinearLayout linearLayout; CustomLinearLayout customLinearLayout; CheckBox checkBox; ImageView imageView; TextView title; TextView miaoshu; TextView price; TextView yprice; Button bt2; } }
需要的两个xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="match_parent"> <CheckBox android:id="@+id/groupChecked" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/groupTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" /> </LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:orientation="horizontal" android:id="@+id/linearLayoutItem" android:gravity="center_vertical" android:layout_height="match_parent"> <CheckBox android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/childChecked" /> <ImageView android:layout_marginLeft="5dp" android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/simpleDraw" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:orientation="vertical"> <TextView android:id="@+id/childTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" android:textSize="16sp" android:textStyle="bold" /> <TextView android:id="@+id/miaoShu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="20dp" android:paddingTop="20dp" android:text="描述" /> <Button android:id="@+id/bt_del" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="删除" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:id="@+id/childPrice" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="价格" android:textColor="#FCB950" android:textSize="16sp" /> <TextView android:id="@+id/childPriceY" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="优惠" /> <com.bwie.yuekao_demo.util.CustomLinearLayout android:id="@+id/customLinearLayout" android:layout_width="wrap_content" android:layout_height="wrap_content"> </com.bwie.yuekao_demo.util.CustomLinearLayout> </LinearLayout> </LinearLayout> </LinearLayout>订单的适配器
public class DingAdapter extends RecyclerView.Adapter { Context context; List<DingDBean.DataBean> data; public DingAdapter(Context context, List<DingDBean.DataBean> data) { this.context = context; this.data = data; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.fragment_item,null); return new ViewHolder1(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { final ViewHolder1 holder1 = (ViewHolder1) holder; //设置数据 holder1.textView.setText(data.get(position).getTitle()); holder1.price.setText(data.get(position).getPrice()+""); holder1.time.setText(data.get(position).getCreatetime()+""); //根据不同的状态动态的设置 int status = data.get(position).getStatus(); if(status==0){ holder1.textView1.setText("待支付"); holder1.btn.setText("待支付"); }else if(status==1){ holder1.textView1.setText("已支付"); holder1.btn.setText("已支付"); }else{ holder1.textView1.setText("已取消"); holder1.btn.setText("已取消"); } //点击改变按钮事件 holder1.btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String btn = holder1.btn.getText().toString(); String text = holder1.textView1.getText().toString(); if(btn.equals("待支付")){ holder1.btn.setText("已取消"); holder1.textView1.setText("已取消"); }else if(btn.equals("已取消")){ Toast.makeText(context,"已取消",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(context,"已支付",Toast.LENGTH_SHORT).show(); } } }); //点击删除按钮事件 holder1.relativeLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //弹出窗 AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); alertDialog.setTitle("警告"); alertDialog.setMessage("确定删除"+data.get(position).getTitle()+"吗?"); alertDialog.setNegativeButton("取消", new AlertDialog.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); alertDialog.setPositiveButton("确定", new AlertDialog.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { data.remove(position); notifyDataSetChanged(); } }); alertDialog.show(); } }); } @Override public int getItemCount() { return data.size(); } class ViewHolder1 extends RecyclerView.ViewHolder { TextView textView; TextView textView1; RelativeLayout relativeLayout; Button btn; TextView price; TextView time; public ViewHolder1(View itemView) { super(itemView); textView=itemView.findViewById(R.id.titleView); textView1 = itemView.findViewById(R.id.textView); price = itemView.findViewById(R.id.price); time = itemView.findViewById(R.id.time); btn = itemView.findViewById(R.id.btn); relativeLayout = itemView.findViewById(R.id.relative); } } }订单所需的xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:id="@+id/relative" android:orientation="horizontal" android:layout_height="match_parent"> <LinearLayout android:layout_centerVertical="true" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="sada" android:id="@+id/titleView" /> <TextView android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:text="价格" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/price" /> <TextView android:text="时间" android:id="@+id/time" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_centerVertical="true" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:textColor="#f00" android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="待支付" /> <Button android:layout_marginTop="10dp" android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="待支付" /> </LinearLayout> </RelativeLayout>MyPopupWindow:
public class MyPopupWindow { private static PopupWindow mPopWindow; public static void showPopupWindow(final ViewPager mViewPager, Context context, ImageView mImageView) { View contentView = LayoutInflater.from(context).inflate(R.layout.popupwindow, null); mPopWindow = new PopupWindow(contentView); mPopWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); mPopWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); TextView tv1 = (TextView)contentView.findViewById(R.id.pop_computer); TextView tv2 = (TextView)contentView.findViewById(R.id.pop_financial); TextView tv3 = (TextView)contentView.findViewById(R.id.pop_manage); tv1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mViewPager.setCurrentItem(1,true); mPopWindow.dismiss(); } }); tv2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mViewPager.setCurrentItem(2,true); mPopWindow.dismiss(); } }); tv3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mViewPager.setCurrentItem(3,true); mPopWindow.dismiss(); } }); mPopWindow.showAsDropDown(mImageView); } }布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ffffff" android:orientation="vertical" android:paddingBottom="2dp"> <TextView android:textSize="20sp" android:id="@+id/pop_computer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="待支付"/> <TextView android:textSize="20sp" android:id="@+id/pop_financial" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="已支付"/> /> <TextView android:textSize="20sp" android:id="@+id/pop_manage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="已取消"/> </LinearLayout>