public class ShopFragment extends BaseFragment implements Constance.ShopView {
@BindView(R.id.rcy)
RecyclerView rcy;
Unbinder unbinder;
@BindView(R.id.cbAll)
CheckBox cbAll;
@BindView(R.id.price)
TextView price;
@BindView(R.id.jisuan)
Button jisuan;
private Constance.ShopPresenter presenter;
private MyBussionAdapter adapter;
@Override
protected int layoutId() {
return R.layout.shop_layout;
}
@Override
protected void initView(View view) {
isViewCreated = true;
}
@Override
protected void lazyLoad() {
presenter = new ShopPresenter();
presenter.attachView(this);
presenter.requestModel();
}
List<ShopBean.DataBean> data;
@Override
public void showData(final List<ShopBean.DataBean> data) {
this.data = data;
Toast.makeText(getActivity(), "data:" + data, Toast.LENGTH_SHORT).show();
adapter = new MyBussionAdapter(R.layout.bussion_item, data);
rcy.setLayoutManager(new LinearLayoutManager(getActivity()));
rcy.setAdapter(adapter);
adapter.setOnBussionClickListen(new MyBussionAdapter.BussionCallBack() {
@Override
public void bussionClick() {
boolean result = true;
for (int i = 0; i < data.size(); i++) {
boolean businessChecked = data.get(i).getBussionChecked();
result = result & businessChecked;
for (int j = 0; j < data.get(i).getList().size(); j++) {
boolean goodsChecked = data.get(i).getList().get(j).getGoodsChecked();
result = result & goodsChecked;
}
}
cbAll.setChecked(result);
catourxiaxie();
adapter.notifyDataSetChanged();
}
});
cbAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i < data.size(); i++) {
data.get(i).setBussionChecked(cbAll.isChecked());
for (int j = 0; j < data.get(i).getList().size(); j++) {
data.get(i).getList().get(j).setGoodsChecked(cbAll.isChecked());
}
}
catourxiaxie();
adapter.notifyDataSetChanged();
}
});
}
private void catourxiaxie(){
double totalCount=0;
for (int i = 0; i < data.size(); i++) {
for (int j = 0; j < data.get(i).getList().size(); j++) {
if (data.get(i).getList().get(j).getGoodsChecked()==true){
int num = data.get(i).getList().get(j).getNum();
double price = data.get(i).getList().get(j).getPrice();
double v = num * price;
totalCount=totalCount+v;
}
}
}
price.setText(totalCount+"");
adapter.notifyDataSetChanged();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// TODO: inflate a fragment view
View rootView = super.onCreateView(inflater, container, savedInstanceState);
unbinder = ButterKnife.bind(this, rootView);
return rootView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
presenter.destory();
}
}
public class MyBussionAdapter extends BaseQuickAdapter<ShopBean.DataBean,BaseViewHolder> {
BussionCallBack bussionClickListen;
public interface BussionCallBack{
public void bussionClick();
}
public void setOnBussionClickListen(BussionCallBack bussionClickListen){
this.bussionClickListen=bussionClickListen;
}
public MyBussionAdapter(int layoutResId, @Nullable List<ShopBean.DataBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, final ShopBean.DataBean item) {
helper.setText(R.id.tv_business_name,item.getSellerName());
List<ShopBean.DataBean.ListBean> list = item.getList();
final MyGoodsAdapter adapter = new MyGoodsAdapter(R.layout.goods_item,list);
RecyclerView goods_rcy = helper.getView(R.id.rv_goods);
LinearLayoutManager manager = new LinearLayoutManager(mContext,LinearLayoutManager.VERTICAL,false);
goods_rcy.setLayoutManager(manager);
goods_rcy.setAdapter(adapter);
final CheckBox cb_bussion = helper.getView(R.id.cb_business);
cb_bussion.setOnCheckedChangeListener(null);
cb_bussion.setChecked(item.getBussionChecked());
adapter.setOnGoodsClickListen(new MyGoodsAdapter.GoodsCallBack() {
@Override
public void GoodsClick() {
boolean result=true;
for (int i = 0; i < item.getList().size(); i++) {
//for循环遍历出所有商品的点击状态
boolean goodsChecked = item.getList().get(i).getGoodsChecked();
//然后又一个未选中的话 那么商品条目就是未选中
result=result&goodsChecked;
}
//将条目状态返回给商家
item.setBussionChecked(result);
//适配器刷新
adapter.notifyDataSetChanged();
//最后进行接口回调回传
bussionClickListen.bussionClick();
}
});
//这是将外母商家的条目状态连动内部商品
cb_bussion.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i < item.getList().size(); i++) {
item.getList().get(i).setGoodsChecked(cb_bussion.isChecked());
}
item.setBussionChecked(cb_bussion.isChecked());
adapter.notifyDataSetChanged();
bussionClickListen.bussionClick();
}
});
}
}
public class MyGoodsAdapter extends BaseQuickAdapter<ShopBean.DataBean.ListBean,BaseViewHolder> {
public interface GoodsCallBack{
public void GoodsClick();
}
GoodsCallBack goodsClickListen;
public void setOnGoodsClickListen(GoodsCallBack goodsClickListen){
this.goodsClickListen=goodsClickListen;
}
public MyGoodsAdapter(int layoutResId, @Nullable List<ShopBean.DataBean.ListBean> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, final ShopBean.DataBean.ListBean item) {
helper.setText(R.id.tv_goodsTitle,item.getTitle());
helper.setText(R.id.tv_goodsPrice,"$"+item.getPrice());
final TextView tv = helper.getView(R.id.tv_num);
tv.setText(item.getNum()+"");
String images = item.getImages();
String[] split = images.split("\\|");
Glide.with(mContext).load(images).into((ImageView) helper.getView(R.id.iv_goodsIcon));
final CheckBox cb_goods = helper.getView(R.id.cb_goods);
//获取焦点
cb_goods.setOnCheckedChangeListener(null);
cb_goods.setChecked(item.getGoodsChecked());
//点击商品条目应该出现的效果
cb_goods.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
item.setGoodsChecked(b);
goodsClickListen.GoodsClick();
}
});
ImageButton jian = helper.getView(R.id.jian);
ImageButton jia = helper.getView(R.id.jia);
jia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String s = tv.getText().toString();
int i = Integer.parseInt(s);
i=i+1;
item.setNum(i);
goodsClickListen.GoodsClick();
}
});
jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String s = tv.getText().toString();
int i = Integer.parseInt(s);
i=i-1;
if (i<0){
i=0;
item.setNum(i);
}
item.setNum(i);
goodsClickListen.GoodsClick();
}
});
}
}