Fragment
package com.example.zsd.myapplication0403.frag;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ExpandableListView;
import android.widget.TextView;
import com.example.zsd.myapplication0403.R;
import com.example.zsd.myapplication0403.adapter.ShopCardAdapter;
import com.example.zsd.myapplication0403.base.BaseFragment;
import com.example.zsd.myapplication0403.bean.ShopingCarJson;
import com.example.zsd.myapplication0403.mvp.MVP;
import com.example.zsd.myapplication0403.presenter.Presenter;
import com.yanxuwen.MyRecyclerview.MyBaseAdapter;
import java.util.HashMap;
import java.util.List;
public class ShopingFragment extends BaseFragment implements MVP.Viewable {
private Presenter presenter;
private RecyclerView expandableListView;
private CheckBox checkBox;
private TextView sum;
private List<ShopingCarJson.DataBean.ListBean> childlist;
private ShopCardAdapter myBaseAdapter;
private List<ShopingCarJson.DataBean> list;
@Override
protected void initView(View view) {
expandableListView = view.findViewById(R.id.expandlistView);
checkBox = view.findViewById(R.id.checkboxall);
sum = view.findViewById(R.id.priceall);
expandableListView.setLayoutManager(new LinearLayoutManager(getActivity()));
}
@Override
protected void initLinsenter() {
}
@Override
protected int findViewID() {
return R.layout.shopingfrag;
}
@Override
protected void initData() {
presenter = new Presenter(this);
HashMap<String, String> map = new HashMap<>();
map.put("uid","51");
presenter.Shoping(map);
}
@Override
public void Succes(Object object) {
Log.e("tag",object+"");
final ShopingCarJson json = (ShopingCarJson) object;
list = json.getData();
myBaseAdapter = new ShopCardAdapter(getActivity(),json.getData());
expandableListView.setAdapter(myBaseAdapter);
myBaseAdapter.notifyDataSetChanged();
checkBox.setOnCheckedChangeListener(null);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < list.size(); i++) {
list.get(i).setCheckBox(checkBox.isChecked());
for (int j = 0; j < list.get(i).getList().size(); j++) {
list.get(i).getList().get(j).setCheckBox(checkBox.isChecked());
}
}
getSum();
myBaseAdapter.notifyDataSetChanged();
}
});
myBaseAdapter.setCallBackGroupLinsenter(new ShopCardAdapter.CallBackGroupLinsenter() {
@Override
public void initCheckeds() {
//获取父条目和字条目的选中状态
boolean sync = true;
for (int i = 0; i < list.size(); i++) {
sync = sync & list.get(i).isCheckBox();
for (int j = 0; j < list.get(i).getList().size(); j++) {
sync = sync & list.get(i).getList().get(j).isCheckBox();
}
}
checkBox.setChecked(sync);
getSum();
}
});
}
private void getSum() {
int sums = 0;
for (int i = 0; i < list.size(); i++) {
List<ShopingCarJson.DataBean.ListBean> list1 = this.list.get(i).getList();
for (int j = 0; j < list1.size(); j++) {
int defalutNumber = list1.get(j).getDefalutNumber();
double price = list1.get(j).getPrice();
if (list1.get(j).isCheckBox()==true) {
sums += price * defalutNumber;
}
}
}
sum.setText(sums+"");
}
@Override
public void Errors(Object object) {
Log.e("tag",object+"");
}
}
Adapter
package com.example.zsd.myapplication0403.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.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;
import com.example.zsd.myapplication0403.R;
import com.example.zsd.myapplication0403.bean.ShopingCarJson;
import java.util.List;
/**
* Created by &{USER} on &{DATE}.
*/
public class ShopCardAdapter extends RecyclerView.Adapter<ShopCardAdapter.MyView> {
Context context ;
List<ShopingCarJson.DataBean> list;
private ShopCardTwoAdapter shopCardTwoAdapter;
private List<ShopingCarJson.DataBean.ListBean> list1;
public ShopCardAdapter(Context context, List<ShopingCarJson.DataBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public ShopCardAdapter.MyView onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.iteam_shop,viewGroup,false);
MyView myView = new MyView(view);
return myView;
}
@Override
public void onBindViewHolder(@NonNull final ShopCardAdapter.MyView myView, final int i) {
myView.name_one.setText(list.get(i).getSellerName());
list1 = list.get(i).getList();
shopCardTwoAdapter = new ShopCardTwoAdapter(context,list1);
myView.rvT1.setLayoutManager(new LinearLayoutManager(context));
myView.rvT1.setAdapter(shopCardTwoAdapter);
//焦点冲突
myView.oneCheck.setOnCheckedChangeListener(null);
myView.oneCheck.setChecked(list.get(i).isCheckBox());
shopCardTwoAdapter.setCallBackChildChecked(new ShopCardTwoAdapter.CallBackChildChecked() {
@Override
public void initChecked() {
boolean sync = true;
for (int j = 0; j < list.get(i).getList().size(); j++) {
sync = sync&list.get(i).getList().get(j).isCheckBox();
}
myView.oneCheck.setChecked(sync);
shopCardTwoAdapter.notifyDataSetChanged();
callBackGroupLinsenter.initCheckeds();
}
});
//父条目选中全选框就选中
myView.oneCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int j = 0; j < list.get(i).getList().size(); j++) {
list.get(i).getList().get(j).setCheckBox(myView.oneCheck.isChecked());
}
list.get(i).setCheckBox(myView.oneCheck.isChecked());
notifyDataSetChanged();
callBackGroupLinsenter.initCheckeds();
}
});
shopCardTwoAdapter.notifyDataSetChanged();
}
@Override
public int getItemCount() {
return list.size();
}
public class MyView extends RecyclerView.ViewHolder {
private final TextView name_one;
private final RecyclerView rvT1;
private final CheckBox oneCheck;
public MyView(@NonNull View itemView) {
super(itemView);
name_one = itemView.findViewById(R.id.name_one);
rvT1 = itemView.findViewById(R.id.rvT1);
oneCheck = itemView.findViewById(R.id.oneCheck);
}
}
private CallBackGroupLinsenter callBackGroupLinsenter;
public void setCallBackGroupLinsenter(CallBackGroupLinsenter callBackGroupLinsenter) {
this.callBackGroupLinsenter = callBackGroupLinsenter;
}
public interface CallBackGroupLinsenter{
void initCheckeds();
}
}
Adapter2
package com.example.zsd.myapplication0403.adapter;
import android.content.Context;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import com.example.zsd.myapplication0403.R;
import com.example.zsd.myapplication0403.bean.ShopingCarJson;
import com.example.zsd.myapplication0403.evnt.View_add_del;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
/**
* Created by &{USER} on &{DATE}.
*/
public class ShopCardTwoAdapter extends RecyclerView.Adapter<ShopCardTwoAdapter.MyView> {
Context context ;
List<ShopingCarJson.DataBean.ListBean> list;
public ShopCardTwoAdapter(Context context, List<ShopingCarJson.DataBean.ListBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public MyView onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.iteams,viewGroup,false);
MyView myView = new MyView(view);
return myView;
}
@Override
public void onBindViewHolder(@NonNull final MyView myView, final int i) {
Uri parse = Uri.parse(list.get(i).getImages());
myView.img1.setImageURI(parse);
myView.names3.setText(list.get(i).getTitle());
myView.names4.setText(list.get(i).getPrice()+"");
//避免焦点
myView.twoCheck.setOnCheckedChangeListener(null);
//
myView.twoCheck.setChecked(list.get(i).isCheckBox());
myView.twoCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
list.get(i).setCheckBox(isChecked);
callBackChildChecked.initChecked();
}
});
myView.views_add.setCallBackListener(new View_add_del.CallBackListener() {
@Override
public void Firstadd(int number) {
list.get(i).setDefalutNumber(number);
callBackChildChecked.initChecked();
}
@Override
public void Firstdel(int number) {
list.get(i).setDefalutNumber(number);
callBackChildChecked.initChecked();
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class MyView extends RecyclerView.ViewHolder {
private final SimpleDraweeView img1;
private final TextView names3;
private final TextView names4;
private final View_add_del views_add;
private final CheckBox twoCheck;
public MyView(@NonNull View itemView) {
super(itemView);
img1 = itemView.findViewById(R.id.img1);
names3 = itemView.findViewById(R.id.names3);
names4 = itemView.findViewById(R.id.names4);
views_add = itemView.findViewById(R.id.views_add);
twoCheck = itemView.findViewById(R.id.twoCheck);
}
}
private CallBackChildChecked callBackChildChecked;
public void setCallBackChildChecked(CallBackChildChecked callBackChildChecked) {
this.callBackChildChecked = callBackChildChecked;
}
public interface CallBackChildChecked{
void initChecked();
}
}
自定义view
package com.example.zsd.myapplication0403.evnt;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.example.zsd.myapplication0403.R;
import java.util.List;
/**
* Created by &{USER} on &{DATE}.
*/
public class View_add_del extends LinearLayout {
private Button del;
private TextView edit_num;
private Button add;
private int number;
public View_add_del(Context context) {
super(context);
}
public View_add_del(final Context context, AttributeSet attrs) {
super(context, attrs);
View view = LayoutInflater.from(context).inflate(R.layout.view_add_del,this);
del = view.findViewById(R.id.del);
edit_num = view.findViewById(R.id.edit_num);
add = view.findViewById(R.id.add);
String s = edit_num.getText().toString();
number = Integer.parseInt(s);
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
number = number +1;
Log.e("asa",""+number);
edit_num.setText(String.valueOf(number));
CallBackListener.Firstadd(number);
}
});
del.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
number = number-1;
if(number<1){
number=1;
edit_num.setText(String.valueOf(number));
}
edit_num.setText(String.valueOf(number));
CallBackListener.Firstdel(number);
}
});
}
public View_add_del(Context context,AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
//定义接口
CallBackListener CallBackListener;
public void setCallBackListener(CallBackListener CallBackListener) {
this.CallBackListener = CallBackListener;
}
public interface CallBackListener {
public void Firstadd(int number);
public void Firstdel(int number);
}
}