public class Fragment3 extends Fragment {
private RecyclerView shoppingrecycler;
private CheckBox shoppingcheck;
private TextView shoppingprice,shoppingclose;
private ShopCartPresenter shopCartPresenter;
double newsum;
private ShopCarAdapter shopCarAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment3, null, false);
shoppingrecycler = view.findViewById(R.id.shoppingrecycler);
shoppingcheck = view.findViewById(R.id.shoppingcheck);
shoppingprice = view.findViewById(R.id.shoppingprice);
shoppingclose = view.findViewById(R.id.shoppingclose);
shopCarAdapter = new ShopCarAdapter(getContext());
shoppingrecycler.setAdapter(shopCarAdapter);
shoppingrecycler.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false));
shoppingcheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
shopCarAdapter.checkedAll(isChecked);
shopCarAdapter.priceAll();
shopCarAdapter.notifyDataSetChanged();
}
});
shopCarAdapter.setCall(new ShopCarAdapter.Call() {
@Override
public void mCall(double a, int b) {
shoppingprice.setText(a+"");
}
});
shopCarAdapter.setDataCall(new ShopCarAdapter.DataCall() {
@Override
public void dataCall(boolean a) {
shoppingcheck.setChecked(a);
}
@Override
public void fail(Result o) {
}
@Override
public void onSuccess(Object result) {
}
});
//监听
shoppingclose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//拿去数据看看里面有多少个选中
//如果选中就带着数据去结算页面
List<ShoppingChildBean> jietwolist=new ArrayList<>();
List<ShoppingBean> jielist = shopCarAdapter.getlist();
for (int i = 0; i < jielist.size(); i++) {
List<ShoppingChildBean> listchild=jielist.get(i).shoppingCartList;
for (int j = 0; j < listchild.size(); j++) {
if (listchild.get(j).check){
jietwolist.add(new ShoppingChildBean(listchild.get(j).commodityId,
listchild.get(j).commodityName,listchild.get(j).count, listchild.get(j).pic,
listchild.get(j).price,listchild.get(j).check));
}
}
}
}
});
return view;
}
class shopData implements DataCall<List<ShoppingBean>> {
@Override
public void onSuccess(List<ShoppingBean> result, Object... args) {
shopCarAdapter.clear();
shopCarAdapter.addList(result);
shopCarAdapter.notifyDataSetChanged();
}
@Override
public void fail(List<ShoppingBean> shoppingBeans, Object... args) {
}
}
@Override
public void onResume() {
super.onResume();
//实例化
shopCartPresenter =new ShopCartPresenter(new shopData());
shopCartPresenter.requestData("2231","15619455028422231");
}
}
ShopCarAdapter
public class ShopCarAdapter extends RecyclerView.Adapter<ShopCarAdapter.ViewHolder> {
private Context context;
private List list =new ArrayList<>();
public ShopCarAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.gwc_itme, null, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
final ShoppingBean shopCarBean = list.get(i);
viewHolder.checkBox.setText(list.get(i).categoryName);
viewHolder.adapter.clear();
viewHolder.adapter.add(shopCarBean.shoppingCartList);
viewHolder.adapter.notifyDataSetChanged();
viewHolder.recyclerView.setAdapter(viewHolder.adapter);
viewHolder.checkBox.setChecked(shopCarBean.isChecked);
viewHolder.checkBox.setTag(shopCarBean);
viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<ShoppingChildBean> shoppingCartList = list.get(i).shoppingCartList;
ShoppingBean viewTag = (ShoppingBean) v.getTag();
CheckBox checkBox = (CheckBox) v;
if (checkBox.isChecked()){
viewTag.isChecked=true;
for (int j = 0; j < shoppingCartList.size(); j++) {
shoppingCartList.get(j).check=checkBox.isChecked();
}
viewHolder.adapter.notifyDataSetChanged();
}else {
viewTag.isChecked=false;
for (int j = 0; j < shoppingCartList.size(); j++) {
shoppingCartList.get(j).check=checkBox.isChecked();
}
viewHolder.adapter.notifyDataSetChanged();
}
priceAll();
}
});
//判断二级条目中是否全部选中,如果全选中 则让一级的Checkbox选中,否则相反
viewHolder.adapter.setShoppingData(new ShoppingRecyclerAdapter.ShoppingData() {
@Override
public void getData(int a) {
if (a>list.get(i).shoppingCartList.size()){
list.get(i).isChecked=true;
}else {
list.get(i).isChecked=false;
}
priceAll();
}
});
}
@Override
public int getItemCount() {
return list.size();
}
//全选反选
public void checkedAll(boolean isChecked){
for (int i = 0; i <list.size() ; i++) {
list.get(i).isChecked=isChecked;
final ShoppingBean shopCarBean = list.get(i);
for (int j = 0; j < list.get(i).shoppingCartList.size(); j++) {
shopCarBean.shoppingCartList.get(j).check =isChecked;
}
}
notifyDataSetChanged();
}
//计算价格
public void priceAll() {
int a=0;
int b=0;
double num = 0.0;
for (int i = 0; i <list.size() ; i++) {
final ShoppingBean shopCarBean = list.get(i);
for (int j = 0; j < list.get(i).shoppingCartList.size(); j++) {
b++;
ShoppingChildBean shoppingChildBean = shopCarBean.shoppingCartList.get(j);
if (shoppingChildBean.check) {
num += shoppingChildBean.price * shoppingChildBean.count;
a++;
}
}
}
if (a>=b){
dataCall.dataCall(true);
}else {
dataCall.dataCall(false);
}
call.mCall(num,a);
//a=0;
notifyDataSetChanged();
}
//暴露方法
public List<ShoppingBean> getlist(){
return list;
}
public void clear() {
list.clear();
}
public void addList(List<ShoppingBean> result) {
if (result!=null){
list.addAll(result);
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final CheckBox checkBox;
private final RecyclerView recyclerView;
ShoppingRecyclerAdapter adapter;
public ViewHolder(@NonNull View itemView) {
super(itemView);
checkBox = itemView.findViewById(R.id.check);
recyclerView = itemView.findViewById(R.id.child_recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false));
adapter = new ShoppingRecyclerAdapter(context);
}
}
private Call call;
public void setCall(Call call) {
this.call = call;
}
public interface Call{
void mCall(double a, int b);
}
private DataCall<Collection<E>> dataCall;
public void setDataCall(DataCall<Collection<E>> dataCall) {
this.dataCall = dataCall;
}
public interface DataCall<L extends Collection<E>> {
void dataCall(boolean a);
void fail(Result o);
void onSuccess(Object result);
}
}
ShoppingRecyclerAdapter
public class ShoppingRecyclerAdapter extends RecyclerView.Adapter<ShoppingRecyclerAdapter.ViewHolder> {
private Context context;
List list = new ArrayList<>();
public ShoppingRecyclerAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.shopping_backgroun_item, null, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int i) {
final ShoppingChildBean good = list.get(i);
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.ic_launcher_background)
.error(R.drawable.ic_launcher_foreground);
Glide.with(context).load(good.pic).apply(requestOptions).into(holder.image);
holder.shoppingtext.setText(good.commodityName);
holder.shoppingtextnum.setText(good.count + "");
holder.shoppingrecyclerprice.setText("$" + good.price + "");
holder.checkbox.setChecked(good.check);
holder.checkbox.setTag(good);
//选中
holder.checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
good.check = ((CheckBox) v).isChecked();
//计算价格
notifyDataSetChanged();
isCheck();
}
});
//添加
holder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
good.count++;
good.setCount(good.count);
//计算价格
notifyDataSetChanged();
}
});
//减少
holder.sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (good.count > 1) {
good.count--;
} else {
}
//计算价格
good.setCount(good.count);
notifyDataSetChanged();
}
});
}
public void isCheck() {
int a = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i).check) {
a++;
}
}
shoppingData.getData(a);
}
//定义接口回调
public interface ShoppingData {
void getData(int a);
}
public ShoppingData shoppingData;
public void setShoppingData(ShoppingData shoppingData) {
this.shoppingData = shoppingData;
}
@Override
public int getItemCount() {
return list.size();
}
public void clear() {
list.clear();
}
public void add(List<ShoppingChildBean> shoppingCartList) {
if (shoppingCartList != null) {
list.addAll(shoppingCartList);
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
CheckBox checkbox;
ImageView image;
TextView shoppingtext, shoppingrecyclerprice, shoppingtextnum;
Button add, sub;
public ViewHolder(@NonNull View itemView) {
super(itemView);
checkbox = itemView.findViewById(R.id.checkbox);
image = itemView.findViewById(R.id.image);
shoppingtext = itemView.findViewById(R.id.shoppingtext);
shoppingrecyclerprice = itemView.findViewById(R.id.shoppingrecyclerprice);
shoppingtextnum = itemView.findViewById(R.id.shoppingtextnum);
add = itemView.findViewById(R.id.add);
sub = itemView.findViewById(R.id.sub);
}
}
}