package com.bawei.yuezkao1.view.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.bawei.yuezkao1.R;
import com.bawei.yuezkao1.model.bean.HomeshopsBean;
import com.bawei.yuezkao1.model.bean.MessageBean;
import com.bawei.yuezkao1.view.activity.Main3Activity;
import com.bawei.yuezkao1.view.adapter.GWC_Adapter;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
import io.realm.Realm;
/**
* A simple {@link Fragment} subclass.
*/
public class GWCFragment extends Fragment {
@BindView(R.id.recyclerView_gwc)
RecyclerView recyclerViewGwc;
@BindView(R.id.checkbox_all)
CheckBox checkboxAll;
@BindView(R.id.textView_price)
TextView textViewPrice;
@BindView(R.id.textView_count)
TextView textViewCount;
private Unbinder unbinder;
private Realm realm;
private List<HomeshopsBean> homeshopsBeanList;
private List<HomeshopsBean> homeshopsBeanListSelected=new ArrayList<>();
private GWC_Adapter gwc_adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_gwc, container, false);
unbinder= ButterKnife.bind(this,view);
realm=Realm.getDefaultInstance();
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
recyclerViewGwc.setLayoutManager(new LinearLayoutManager(getActivity()));
//查询数据库购物车数据并展示
homeshopsBeanList=realm.where(HomeshopsBean.class).findAll();
gwc_adapter=new GWC_Adapter(getActivity(),homeshopsBeanList);
recyclerViewGwc.setAdapter(gwc_adapter);
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@Override
public void onDestroy() {
super.onDestroy();
if(!realm.isClosed()){
realm.close();
}
}
//全选
@OnClick(R.id.checkbox_all)
public void onViewClicked(){
realm.beginTransaction();//开启事务
boolean checked=checkboxAll.isChecked();
for (int i = 0; i <homeshopsBeanList.size() ; i++) {
homeshopsBeanList.get(i).setSelected(checked);
}
//计算总价和总量
calcTotal();
realm.commitTransaction();//提交事务
}
/**
* 存储总价的变量
*/
private int totalPrice;
/**
* 存储选中商品总数量
*/
private int totalCount;
/**
* 标识商品是否是全选的变量
*/
private boolean isSelectAll;
private void calcTotal() {
totalPrice=0;//重置商品总价
totalCount=0;//重置商品总量
isSelectAll=true;//重置全选按钮的状态
for (int i = 0; i <homeshopsBeanList.size() ; i++) {
if(homeshopsBeanList.get(i).isSelected()){
// 累计价格
totalPrice+=homeshopsBeanList.get(i).getNowprice();
// 累计数量
totalCount+=1;
}else {
isSelectAll=false;//如果有一件没选中全选就是false
}
}
// 刷新适配器
gwc_adapter.notifyDataSetChanged();
// 设置总价
textViewPrice.setText("总价:¥"+totalPrice);
// 设置总数量
textViewCount.setText("共计"+totalCount+"件商品");
// 修改页面
checkboxAll.setChecked(isSelectAll);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void getEvent(MessageBean messageBean){
//收到计算总价和总量的事件
if("计算总量和总价".equals(messageBean.getMessage())){
calcTotal();
}
}
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
/*立即结算购买*/
@OnClick(R.id.button_jiesuan)
public void jiesuan(){
homeshopsBeanListSelected.clear();//清空一下上次的数据
for (int i = 0; i <homeshopsBeanList.size() ; i++) {
if(homeshopsBeanList.get(i).isSelected()){//用户选中的商品
homeshopsBeanListSelected.add(homeshopsBeanList.get(i));
}
}
EventBus.getDefault().postSticky(homeshopsBeanListSelected);
//跳转到确认订单页面
Intent intent=new Intent(getActivity(),Main3Activity.class);
startActivity(intent);
}
}