package soexample.umeng.com.xuzaizahuopu.presenter;
import android.content.Context;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.gson.Gson;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
import soexample.umeng.com.xuzaizahuopu.R;
import soexample.umeng.com.xuzaizahuopu.adapter.MyShoppingCarAdapter;
import soexample.umeng.com.xuzaizahuopu.listener.HttpListener;
import soexample.umeng.com.xuzaizahuopu.model.CarBean;
import soexample.umeng.com.xuzaizahuopu.net.OkHttp;
import soexample.umeng.com.xuzaizahuopu.view.AppDelegate;
public class ShoppingCarFragmentPresenter extends AppDelegate implements View.OnClickListener {
private Context context;
private TextView car_manyAll;
private RecyclerView car_recyclerView;
private ImageView car_selectAll;
private TextView car_shopNum;
private TextView car_textView_compile;
private String url = "http://www.zhaoapi.cn/product/getCarts?uid=71";
private MyShoppingCarAdapter adapter;
private List<CarBean.DataBean> list = new ArrayList<>();
@Override
protected int getLayoutId() {
return R.layout.shoppingcar_layout;
}
@Override
public void initData() {
super.initData();
car_manyAll = get(R.id.car_manyAll);
car_recyclerView = get(R.id.car_recyclerView);
car_selectAll = get(R.id.car_selectAll);
car_shopNum = get(R.id.car_shopNum);
car_textView_compile = get(R.id.car_TextView_compile);
setClick(this,R.id.car_selectAll);
//设置布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
car_recyclerView.setLayoutManager(linearLayoutManager);
doHttp();
//设置适配器
adapter = new MyShoppingCarAdapter(context);
car_recyclerView.setAdapter(adapter);
adapter.setCallBack(new MyShoppingCarAdapter.CallBack() {
@Override
public void onBack(List<CarBean.DataBean> listBeans) {
double priceAll = 0;
int numAll = 0;
int num = 0;
for (int i = 0; i <listBeans.size() ; i++) {
List<CarBean.DataBean.ListBean> list = listBeans.get(i).getList();
for(int a=0;a<list.size();a++){
numAll=numAll+list.get(a).getNum();
if (list.get(a).isIscheck()){
num = num+list.get(a).getNum();
priceAll = priceAll+(list.get(a).getPrice()*list.get(a).getNum());
}
}
}
if (num<numAll){
car_selectAll.setImageResource(R.drawable.cricle_no);
isClick = true;
}else{
car_selectAll.setImageResource(R.drawable.cricle_yes);
isClick =false;
}
car_manyAll.setText("合计:"+priceAll+"");
car_shopNum.setText("结算:"+num);
}
});
}
private void doHttp() {
new OkHttp().get(url).setListener(new HttpListener() {
@Override
public void onSuccess(String data) {
Gson gson = new Gson();
CarBean carBean = gson.fromJson(data, CarBean.class);
list = carBean.getData();
adapter.setList(list);
}
@Override
public void oonFailure(String data) {
}
});
}
@Override
public void getContext(Context context) {
this.context = context;
}
private boolean isClick = true;
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.car_selectAll:
if (isClick){
car_selectAll.setImageResource(R.drawable.cricle_yes);
select(true);
isClick = false;
}else{
car_selectAll.setImageResource(R.drawable.cricle_no);
select(false);
isClick = true;
}
break;
}
}
private void select(boolean flag) {
double price = 0;
int num = 0;
for (int i = 0; i <list.size() ; i++) {
List<CarBean.DataBean.ListBean> listchild = list.get(i).getList();
for(int a= 0;a<listchild.size();a++){
num++;
price = listchild.get(a).getPrice()+price;
listchild.get(a).setIscheck(flag);
}
}
if (flag){
car_manyAll.setText("合计:"+price);
car_shopNum.setText("结算:"+num);
}else{
car_shopNum.setText("合计:0.00");
car_manyAll.setText("结算:(0)");
}
adapter.notifyDataSetChanged();
}
}
package soexample.umeng.com.xuzaizahuopu.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
import soexample.umeng.com.xuzaizahuopu.R;
import soexample.umeng.com.xuzaizahuopu.model.CarBean;
public class MyShoppingCarAdapter extends RecyclerView.Adapter<MyShoppingCarAdapter.MyViewHolder> {
private Context context;
private List<CarBean.DataBean> list = new ArrayList<>();
public MyShoppingCarAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public MyShoppingCarAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.car_layout, null);
MyViewHolder holder = new MyViewHolder(view);
holder.textView = view.findViewById(R.id.name);
holder.recyclerView =view.findViewById(R.id.recyclerView);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyShoppingCarAdapter.MyViewHolder holder, int position) {
holder.textView.setText(list.get(position).getSellerName());
createChildAdapter(context,list.get(position).getList(),holder.recyclerView);
}
private void createChildAdapter(Context context, List<CarBean.DataBean.ListBean> listchild, RecyclerView recyclerView) {
//创建布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
//设置布局管理器
recyclerView.setLayoutManager(linearLayoutManager);
MyShopingCarChildAdapter shopingCarChildAdapter = new MyShopingCarChildAdapter(listchild,context);
recyclerView.setAdapter(shopingCarChildAdapter);
shopingCarChildAdapter.setCallBack(new MyShopingCarChildAdapter.CallBack() {
@Override
public void onBack() {
callBack.onBack(list);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public void setList(List<CarBean.DataBean> list) {
list.remove(0);
this.list = list;
notifyDataSetChanged();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView textView;
RecyclerView recyclerView;
public MyViewHolder(View itemView) {
super(itemView);
}
}
public void setCallBack(CallBack callBack) {
this.callBack = callBack;
}
private CallBack callBack;
public interface CallBack{
void onBack(List<CarBean.DataBean> listBeans);
}
}
package soexample.umeng.com.xuzaizahuopu.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.util.List;
import soexample.umeng.com.xuzaizahuopu.R;
import soexample.umeng.com.xuzaizahuopu.model.CarBean;
public class MyShopingCarChildAdapter extends RecyclerView.Adapter<MyShopingCarChildAdapter.MyViewHolder> {
private List<CarBean.DataBean.ListBean> list;
private Context context;
private int num;
public MyShopingCarChildAdapter(List<CarBean.DataBean.ListBean> list, Context context) {
this.list = list;
this.context = context;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.car_item_layout, null);
MyViewHolder holder = new MyViewHolder(view);
holder.car_item_add = view.findViewById(R.id.car_item_add);
holder.car_item_desc =view.findViewById(R.id.car_item_desc);
holder.car_item_Edit_Text_num = view.findViewById(R.id.car_item_Edit_Text_num);
holder.car_item_ImageView_select = view.findViewById(R.id.car_item_ImageView_select);
holder.car_item_ImageView_Shop =view.findViewById(R.id.car_item_ImageView_Shop);
holder.car_item_jian =view.findViewById(R.id.car_item_jian);
holder.car_item_many =view.findViewById(R.id.car_item_many);
holder.car_item_title =view.findViewById(R.id.car_item_title);
return holder;
}
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
holder.car_item_title.setText(list.get(position).getTitle());
holder.car_item_desc.setText(list.get(position).getSubhead());
holder.car_item_many.setText(list.get(position).getPrice()+"");
Glide.with(context).load(list.get(position).getImages().split("\\|")[0]).into(holder.car_item_ImageView_Shop);
if (list.get(position).isIscheck()){
holder.car_item_ImageView_select.setImageResource(R.drawable.cricle_yes);
}else{
holder.car_item_ImageView_select.setImageResource(R.drawable.cricle_no);
}
//单选按钮
holder.car_item_ImageView_select.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (list.get(position).isIscheck()){
list.get(position).setIscheck(false);
}else{
list.get(position).setIscheck(true);
}
notifyItemChanged(position);
callBack.onBack();
}
});
holder.car_item_Edit_Text_num.setText(list.get(position).getNum()+"");
//商品数量增加
holder.car_item_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int num = list.get(position).getNum();
num++;
list.get(position).setNum(num);
notifyItemChanged(position);
callBack.onBack();
}
});
//商品数量减少
holder.car_item_jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int num = list.get(position).getNum();
num--;
list.get(position).setNum(num);
notifyItemChanged(position);
callBack.onBack();
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
ImageView car_item_add,car_item_jian,car_item_ImageView_Shop,car_item_ImageView_select;
EditText car_item_Edit_Text_num;
TextView car_item_desc,car_item_title,car_item_many;
public MyViewHolder(View itemView) {
super(itemView);
}
}
public void setCallBack(CallBack callBack) {
this.callBack = callBack;
}
private CallBack callBack;
public interface CallBack{
void onBack();
}
}
package dw.dw.com.xiaoxuzahuopu.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import dw.dw.com.xiaoxuzahuopu.R;
import dw.dw.com.xiaoxuzahuopu.model.ShopCarBean;
/**
* author:DuWei
* date:2018/11/09
* 购物车外层商家
*/
public class ShopCarAdapter extends RecyclerView.Adapter<ShopCarAdapter.MyViewHolder> {
private List<ShopCarBean.DataBean> list = new ArrayList<>();
private Context context;
private ShopCarChildAdapter adapter;
private List<ShopCarBean.DataBean.ListBean> childlist;
public ShopCarAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.shopcar_item_layout, null);
MyViewHolder holder = new MyViewHolder(view);
holder.textView = view.findViewById(R.id.shop_car_item_TextView_shop);
holder.recyclerView = view.findViewById(R.id.shop_car_item_shop_RecyclerView);
holder.imageView = view.findViewById(R.id.shop_car_item_ImageView_shop_check);
return holder;
}
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
//商家名字赋值
holder.textView.setText(list.get(position).getSellerName());
//内层商品的adapter设置
createChildAdapter(holder.recyclerView, context, list.get(position).getList());
//内层商品接口回调
adapter.setDataCallBack(new ShopCarChildAdapter.DataCallBack() {
@Override
public void onBack() {
//商家与内部商品按钮联动
shopCheck(holder, position);
dataCallBack.onBack(list);
}
});
//商家单选框设置
if (list.get(position).isShopCheck()) {//选中
holder.imageView.setImageResource(R.drawable.checkyes);//(设置为选中图片)
} else {//未选中
holder.imageView.setImageResource(R.drawable.checkno);//(设置为未选中图片)
}
//商家选框按钮
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
shopClick(position);
notifyItemChanged(position);//刷新单个条目
dataCallBack.onBack(list);//接口回调
}
});
}
//商家选框按钮逻辑
private void shopClick(int position) {
childlist = list.get(position).getList();//内层商品集合
if (list.get(position).isShopCheck()) {//选中状态点击变为未选中
for (int i = 0; i < childlist.size(); i++) {
childlist.get(i).setCheck(false);//内部商品按钮开关(关闭)
}
list.get(position).setShopCheck(false);//外层商家按钮开关(关闭)
} else {//未选中状态点击变为选中
for (int i = 0; i < childlist.size(); i++) {
childlist.get(i).setCheck(true);//内部商品按钮开关(开启)
}
list.get(position).setShopCheck(true);//外层商家按钮开关(开启)
}
}
//商家与内部商品按钮联动
private void shopCheck(MyViewHolder holder, int position) {
int num = 0;
int numAll = 0;
List<ShopCarBean.DataBean.ListBean> childlist = list.get(position).getList();
for (int i = 0; i < childlist.size(); i++) {
numAll++;
if (childlist.get(i).isCheck()) {
num++;
}
}
if (num == numAll) {
list.get(position).setShopCheck(true);
holder.imageView.setImageResource(R.drawable.checkyes);
} else {
list.get(position).setShopCheck(false);
holder.imageView.setImageResource(R.drawable.checkno);
}
}
//购物车内层商品
private void createChildAdapter(RecyclerView recyclerView, Context context, final List<ShopCarBean.DataBean.ListBean> list) {
//设置布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
recyclerView.setLayoutManager(linearLayoutManager);
adapter = new ShopCarChildAdapter(list, context);
recyclerView.setAdapter(adapter);
}
//条目总数
@Override
public int getItemCount() {
return list.size();
}
//获取数据
public void setList(List<ShopCarBean.DataBean> list) {
this.list = list;
notifyDataSetChanged();
}
//ViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView textView;
RecyclerView recyclerView;
ImageView imageView;
public MyViewHolder(View itemView) {
super(itemView);
}
}
//接口
private DataCallBack dataCallBack;
public void setDataCallBack(DataCallBack dataCallBack) {
this.dataCallBack = dataCallBack;
}
public interface DataCallBack {
void onBack(List<ShopCarBean.DataBean> list);
}
}