展示页面
public class ShouFragment extends Fragment implements ContarInterfac.shouFragmentFace {
ContarInterfac.PresenterFara presenterFara;
TextView text_zong;
RecyclerView recyclerview_1;
public CheckBox checkBox_1;
WaiAdapter adapter;
public List<MyBean.DataBean> list = new ArrayList<>();
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.shou_fragment, container, false);
text_zong = view.findViewById(R.id.text_zong);
recyclerview_1 = view.findViewById(R.id.recyclerview_1);
checkBox_1 = view.findViewById(R.id.checkbox_1);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerview_1.setLayoutManager(layoutManager);
adapter = new WaiAdapter(list, getContext(), this);
recyclerview_1.setAdapter(adapter);
presenterFara = new MyPersenter<>(this);
presenterFara.getDate();
checkBox_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取总价
int sum = 0;
//获取当前checbox 状态
boolean b = checkBox_1.isChecked();
//checbox是true的时候
if (b) {
//循环遍历list
for (int i = 0; i < list.size(); i++) {
//每个list里面的checde 为true
list.get(i).waichecde = b;
//遍历字条目里的list
for (int j = 0; j < list.get(i).getList().size(); j++) {
//每个字条目list里面的checde 为true
list.get(i).getList().get(j).lichecde = b;
//在为true的里面获取价钱
double price = list.get(i).getList().get(j).getPrice();
//获取数量
int num = list.get(i).getList().get(j).getNum();
//计算总数
sum += price * num;
}
}
} else {
//循环遍历list
for (int i = 0; i < list.size(); i++) {
//每个list里面的checde 为false
list.get(i).waichecde = b;
for (int j = 0; j < list.get(i).getList().size(); j++) {
//每个字条目list里面的checde 为false
list.get(i).getList().get(j).lichecde = b;
}
//总价设置为0;
sum = 0;
}
}
//给总价赋值
text_zong.setText(sum + "");
//刷新适配器
adapter.notifyDataSetChanged();
}
});
//接口回调
adapter.setMyCallBace(new WaiAdapter.MyCallBace() {
@Override
//回调适配器里面的方法
public void setWaice(List<MyBean.DataBean> list_1) {
//定义判断一个值
int ss = 0;
//定义总价值
int sum = 0;
//循环回调集合
for (int i = 0; i < list_1.size(); i++) {
//判断是否是选中状态
if (list_1.get(i).waichecde) {
//选中的判断之+1
ss++;
//循环回调集合里的字条目
for (int j = 0; j < list_1.get(i).getList().size(); j++) {
//获取价钱
double price = list.get(i).getList().get(j).getPrice();
//获取数量
int num = list.get(i).getList().get(j).getNum();
//计算总价
sum += price * num;
}
} else {
//不选中状态
//循环回调集合里的字条目
for (int j = 0; j < list_1.get(i).getList().size(); j++) {
//判断字条目的选中状态
if (list_1.get(i).getList().get(j).lichecde) {
//获取价钱
double price = list.get(i).getList().get(j).getPrice();
//获取数量
int num = list.get(i).getList().get(j).getNum();
//计算总价
sum += price * num;
}
}
}
}
//判断字条目是否都选中
if (ss == list_1.size()) {
//设置为当前checbox为true
checkBox_1.setChecked(true);
} else {
//设置为当前checbox为false
checkBox_1.setChecked(false);
}
//给总价赋值
text_zong.setText(sum + "");
//刷新适配器
adapter.notifyDataSetChanged();
}
});
}
@Override
public void showDate(Object obj) {
MyBean myBean = (MyBean) obj;
list.addAll(myBean.getData());
list.remove(0);
adapter.notifyDataSetChanged();
}
}
外面适配器
public class WaiAdapter extends RecyclerView.Adapter<WaiAdapter.Holder_1>{
List<MyBean.DataBean> list;
Context context;
MyCallBace myCallBace;
ShouFragment shouFragment;
public WaiAdapter(List<MyBean.DataBean> list, Context context,ShouFragment shouFragment) {
this.list = list;
this.context = context;
this.shouFragment=shouFragment;
}
@NonNull
@Override
public Holder_1 onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view =LayoutInflater.from(context).inflate(R.layout.wai_layout,null);
return new Holder_1(view);
}
@Override
public void onBindViewHolder(@NonNull final Holder_1 holder_1, final int i) {
String neme = list.get(i).getSellerName();
holder_1.text_name.setText(neme);
LinearLayoutManager layoutManager = new LinearLayoutManager(context);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
holder_1.recyclerview_2.setLayoutManager(layoutManager);
LiAdaoter adapter = new LiAdaoter(list.get(i).getList(), context,shouFragment );
holder_1.recyclerview_2.setAdapter(adapter);
holder_1.checkbox_2.setChecked(list.get(i).waichecde);
//当前checkbox 的点击事件
holder_1.checkbox_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取当前checkbox 的状态
boolean b = holder_1.checkbox_2.isChecked();
//给当前checkbox设置状态
list.get(i).waichecde=b;
//循环字条目中的长度
for (int j = 0; j <list.get(i).getList().size() ; j++) {
//给字条目中的checbox设置为当前状态
list.get(i).getList().get(j).lichecde=b;
}
//接口传值整个list;
myCallBace.setWaice(list);
}
});
//调用字条目里的接口
adapter.setMyCallBace(new LiAdaoter.MyCallBace() {
@Override
//调用字条目里的方法
public void setWaice(List<MyBean.DataBean.ListBean> list_2) {
//定义一个判断值
int ss =0;
//循环遍穿过list集合里的数量
for (int j = 0; j <list_2.size() ; j++) {
//如果为选中状态
if(list_2.get(j).lichecde){
//值++
ss++;
}
}
//判断之和穿过来的长度一致,那就为true
if(ss==list_2.size()){
//设置当前checbox 为ture
holder_1.checkbox_2.setChecked(true);
//当前boolean值true
list.get(i).waichecde=true;
}else{
//设置当前checbox 为false
holder_1.checkbox_2.setChecked(false);
//当前boolean值false
list.get(i).waichecde=false;
}
//回调接口
myCallBace.setWaice(list);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class Holder_1 extends RecyclerView.ViewHolder{
CheckBox checkbox_2;
TextView text_name;
RecyclerView recyclerview_2;
public Holder_1(@NonNull View itemView) {
super(itemView);
checkbox_2=itemView.findViewById(R.id.checkbox_2);
text_name=itemView.findViewById(R.id.text_name);
recyclerview_2=itemView.findViewById(R.id.recyclerview_2);
}
}
public void setMyCallBace(MyCallBace myCallBace){
this.myCallBace=myCallBace;
}
public interface MyCallBace{
public void setWaice(List<MyBean.DataBean> list);
}
}
//里面适配器
public class LiAdaoter extends RecyclerView.Adapter<LiAdaoter.Holder_2> {
List<MyBean.DataBean.ListBean> list;
Context context;
ShouFragment shouFragment;
private MyCallBace myCallBace;
public LiAdaoter(List<MyBean.DataBean.ListBean> list, Context context, ShouFragment shouFragment) {
this.list = list;
this.context = context;
this.shouFragment = shouFragment;
}
@NonNull
@Override
public Holder_2 onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view =LayoutInflater.from(context).inflate(R.layout.li_layout,null);
return new Holder_2(view);
}
@Override
public void onBindViewHolder(@NonNull final Holder_2 holder_2, final int i) {
double price = list.get(i).getPrice();
String title = list.get(i).getTitle();
String url = list.get(i).getImages();
final int num = list.get(i).getNum();
holder_2.text_shu.setText(num+"");
holder_2.text_title.setText(title);
holder_2.text_price.setText(price+"");
Glide.with(context).load(url).into(holder_2.image_view);
holder_2.checkbox_3.setChecked(list.get(i).lichecde);
//当前checkbox的点击事件
holder_2.checkbox_3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取当前checkbox 的状态
boolean b = holder_2.checkbox_3.isChecked();
//给当前checkbox设置状态
list.get(i).lichecde=b;
//接口回调传值
myCallBace.setWaice(list);
}
});
//加的点击事件
holder_2.text_jia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int n = list.get(i).getNum();
n++;
list.get(i).setNum(n);
holder_2.text_shu.setText(n+"");
myCallBace.setWaice(list);
}
});
//减的点击事件
holder_2.text_jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int n = list.get(i).getNum();
if(n==1){
return;
}
n--;
list.get(i).setNum(n);
holder_2.text_shu.setText(n+"");
myCallBace.setWaice(list);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class Holder_2 extends RecyclerView.ViewHolder{
ImageView image_view;
TextView text_jia,text_jian,text_shu,text_title,text_price;
CheckBox checkbox_3;
public Holder_2(@NonNull View itemView) {
super(itemView);
image_view =itemView.findViewById(R.id.image_view);
text_jia =itemView.findViewById(R.id.text_jia);
text_jian =itemView.findViewById(R.id.text_jian);
text_shu =itemView.findViewById(R.id.text_shu);
text_title =itemView.findViewById(R.id.text_title);
text_price =itemView.findViewById(R.id.text_price);
checkbox_3 =itemView.findViewById(R.id.checkbox_3);
}
}
public void setMyCallBace(MyCallBace myCallBace){
this.myCallBace=myCallBace;
}
public interface MyCallBace{
public void setWaice(List<MyBean.DataBean.ListBean> list);
}
}