1.Addsum
public class Addsum extends LinearLayout {
private View view;
private TextView add;
private TextView jian;
private TextView num;
private TextView num1;
public Addsum(Context context) {
super(context,null);
}
public Addsum(Context context, AttributeSet attrs) {
this(context, attrs,-1);
}
public Addsum(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initview(context);
}
private void initview(Context context) {
view = View.inflate(context, R.layout.add_sum,this);
add = view.findViewById(R.id.add);
jian = view.findViewById(R.id.jian);
num1 = view.findViewById(R.id.num);
}
public void setJiaOnClickListener(OnClickListener onClickListener) {
add.setOnClickListener(onClickListener);
}
public void setNum(int num){
num1.setText(""+num);
}
public void setJianOnClickListener(OnClickListener onClickListener) {
jian.setOnClickListener(onClickListener);
}
}
2.Adapter
public class ShopCarAdapter extends BaseExpandableListAdapter {
private Context context;
private ShopCarBean shopCarBean;
private OnSumClick onSumClick;
private OnAddClickListner onAddClickListner;
private OnJianClickListner onJianClickListner;
public ShopCarAdapter(Context context, ShopCarBean shopCarBean) {
this.context = context;
this.shopCarBean = shopCarBean;
}
@Override
public int getGroupCount() {
return shopCarBean.getData().size();
}
@Override
public int getChildrenCount(int groupPosition) {
return shopCarBean.getData().get(groupPosition).getList().size();
}
@Override
public Object getGroup(int groupPosition) {
return shopCarBean.getData().get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return shopCarBean.getData().get(groupPosition).getList().get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
Holder1 holder1 = null;
if (convertView==null){
convertView = View.inflate(context,R.layout.group_item,null);
holder1 = new Holder1();
holder1.checkBox = convertView.findViewById(R.id.group_checkbox);
holder1.textView= convertView.findViewById(R.id.grouop_name);
convertView.setTag(holder1);
}else {
holder1 = (Holder1) convertView.getTag();
}
holder1.textView.setText(shopCarBean.getData().get(groupPosition).getSellerName());
holder1.checkBox.setChecked(shopCarBean.getData().get(groupPosition).isChecked());
return convertView;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
Holder2 holder2 =null;
if (convertView==null){
convertView=LayoutInflater.from(context).inflate(R.layout.child_item,parent,false);
holder2 = new Holder2();
holder2.checkBox=convertView.findViewById(R.id.child_checkbox);
holder2.imageView=convertView.findViewById(R.id.child_image);
holder2.textView=convertView.findViewById(R.id.child_name);
holder2.textView1=convertView.findViewById(R.id.child_qian);
holder2.addsum=convertView.findViewById(R.id.sum);
convertView.setTag(holder2);
}else {
holder2 = (Holder2) convertView.getTag();
}
holder2.textView.setText(shopCarBean.getData().get(groupPosition).getList().get(childPosition).getTitle());
holder2.textView1.setText(shopCarBean.getData().get(groupPosition).getList().get(childPosition).getPrice()+"");
String images = shopCarBean.getData().get(groupPosition).getList().get(childPosition).getImages();
String[] split = images.split("\\|");
if (split.length>0){
holder2.imageView.setImageURI(split[0]);
}
holder2.checkBox.setChecked(shopCarBean.getData().get(groupPosition).getList().get(childPosition).isCheckbox());
holder2.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
shopCarBean.getData().get(groupPosition).getList().get(childPosition).setCheckbox(true);
}else {
shopCarBean.getData().get(groupPosition).getList().get(childPosition).setCheckbox(false);
}
onItemClick.onclcik();
}
});
holder2.addsum.setNum(shopCarBean.getData().get(groupPosition).getList().get(childPosition).getNum());
//加
holder2.addsum.setJiaOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onAddClickListner.AddClick(groupPosition,childPosition,shopCarBean.getData().get(groupPosition).getList().get(childPosition).getNum());
}
});
//減
holder2.addsum.setJianOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onJianClickListner.JianClick(groupPosition,childPosition,shopCarBean.getData().get(groupPosition).getList().get(childPosition).getNum());
}
});
return convertView;
}
public ShopCarBean getShopCarBean() {
return shopCarBean;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
class Holder1{
CheckBox checkBox;
TextView textView;
}
class Holder2{
CheckBox checkBox;
SimpleDraweeView imageView;
TextView textView;
TextView textView1;
Addsum addsum;
}
//單選
public interface OnItemClick{
void onclcik();
}
private OnItemClick onItemClick;
public void setOnItemClick(OnItemClick onItemClick) {
this.onItemClick = onItemClick;
}
//計算總價接口回調s
public interface OnSumClick{
void onclcik(double sum);
}
public void setOnSumClick(OnSumClick onSumClick1) {
this.onSumClick = onSumClick1;
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
double sum1 = 0;
for (int i = 0; i <shopCarBean.getData().size() ; i++) {
for (int j = 0; j <shopCarBean.getData().get(i).getList().size() ; j++) {
if (shopCarBean.getData().get(i).getList().get(j).isCheckbox()){
int num = shopCarBean.getData().get(i).getList().get(j).getNum();
sum1=sum1+(shopCarBean.getData().get(i).getList().get(j).getPrice()*num);
}
}
}
onSumClick.onclcik(sum1);
/*heji.setText("¥:"+sum1);*/
}
//加
public void setOnAddClickListner(OnAddClickListner onAddClickListner1){
this.onAddClickListner=onAddClickListner1;
}
public interface OnAddClickListner{
void AddClick(int g,int c,int num);
}
//減
public void setOnJianClickListner(OnJianClickListner onJianClickListner1){
this.onJianClickListner=onJianClickListner1;
}
public interface OnJianClickListner{
void JianClick(int g,int c,int num);
}
}
3.Frag
public class ShopcarFrag extends Fragment implements ShopcarView {
@BindView(R.id.qx)
CheckBox qx;
@BindView(R.id.heji)
TextView heji;
private ShopCarPresenter shopCarPresenter = new ShopCarPresenter(this);
@BindView(R.id.expandlistview)
ExpandableListView expandlistview;
Unbinder unbinder;
private ShopCarAdapter shopCarAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_shopcar, container, false);
unbinder = ButterKnife.bind(this, view);
shopCarPresenter.getShopcar();
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@Override
public void onSuccessShopcar(final ShopCarBean shopCarBean) {
shopCarBean.getData().remove(0);
shopCarAdapter = new ShopCarAdapter(getActivity(), shopCarBean);
expandlistview.setAdapter(shopCarAdapter);
//計算總價
shopCarAdapter.setOnSumClick(new ShopCarAdapter.OnSumClick() {
@Override
public void onclcik(double sum) {
heji.setText("¥:"+sum);
}
});
//展開
for (int i = 0; i < shopCarAdapter.getGroupCount(); i++) {
expandlistview.expandGroup(i);
}
//全選
qx.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
for (int i = 0; i <shopCarBean.getData().size() ; i++) {
shopCarBean.getData().get(i).setChecked(true);
for (int j = 0; j <shopCarBean.getData().get(i).getList().size() ; j++) {
shopCarBean.getData().get(i).getList().get(j).setCheckbox(true);
}
}
}else {
for (int i = 0; i <shopCarBean.getData().size() ; i++) {
shopCarBean.getData().get(i).setChecked(false);
for (int j = 0; j <shopCarBean.getData().get(i).getList().size() ; j++) {
shopCarBean.getData().get(i).getList().get(j).setCheckbox(false);
}
}
}
shopCarAdapter.notifyDataSetChanged();
}
});
//單價
shopCarAdapter.setOnItemClick(new ShopCarAdapter.OnItemClick() {
@Override
public void onclcik() {
double sum1 = 0;
for (int i = 0; i <shopCarBean.getData().size() ; i++) {
for (int j = 0; j <shopCarBean.getData().get(i).getList().size() ; j++) {
if (shopCarBean.getData().get(i).getList().get(j).isCheckbox()){
int num = shopCarBean.getData().get(i).getList().get(j).getNum();
sum1=sum1+(shopCarBean.getData().get(i).getList().get(j).getPrice()*num);
}
}
}
heji.setText("¥:"+sum1);
}
});
//加
shopCarAdapter.setOnAddClickListner(new ShopCarAdapter.OnAddClickListner() {
@Override
public void AddClick(int g, int c, int num) {
ShopCarBean shopCarBean1 = shopCarAdapter.getShopCarBean();
shopCarBean1.getData().get(g).getList().get(c).setNum(shopCarBean1.getData().get(g).getList().get(c).getNum()+1);
shopCarAdapter.notifyDataSetChanged();
}
});
//減
shopCarAdapter.setOnJianClickListner(new ShopCarAdapter.OnJianClickListner() {
@Override
public void JianClick(int g, int c, int num) {
ShopCarBean shopCarBean1 = shopCarAdapter.getShopCarBean();
shopCarBean1.getData().get(g).getList().get(c).setNum(shopCarBean1.getData().get(g).getList().get(c).getNum()-1);
shopCarAdapter.notifyDataSetChanged();
}
});
}
@Override
public void onFailerShopcar(String error) {
}
}