自定义view肯德基adapter
package com.ang.shoppsecond.view.adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.ang.shoppsecond.R;
import com.ang.shoppsecond.model.bean.GoodBean;
import com.bumptech.glide.Glide;
import java.util.ArrayList;
import java.util.List;
/**
* @Auther: L丶Ang
* @Date: 2019/3/7 10:05:22
* @Description:
*/
public class MyAdapter extends BaseExpandableListAdapter {
private Context mcontext;
private GoodBean arr;
private float totalPrice = 0;
public MyAdapter(Context mcontext) {
this.mcontext = mcontext;
}
public void setData(GoodBean goodBean){
this.arr=goodBean;
//Log.e("my",goodBean.getData().toString()+"");
}
private CheckBox mcheckbox;
public void setCheckBox(CheckBox checkBox){
this.mcheckbox=checkBox;
mcheckbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CheckBox checkBox1= (CheckBox) view;
sumprice(checkBox1.isChecked());
selectAll(checkBox1.isChecked());
}
});
}
private TextView mtextview;
public void setTextView(TextView textView){
this.mtextview=textView;
}
private void selectAll(boolean checked) {
for (int i = 0; i <arr.getData().size() ; i++) {
GoodBean.DataBean dataBean = arr.getData().get(i);
dataBean.setIscheck(checked);
for (int j = 0; j <dataBean.getSpus().size() ; j++) {
GoodBean.DataBean.SpusBean spusBean = dataBean.getSpus().get(j);
spusBean.setCheck(checked);
}
}
notifyDataSetChanged();
}
@Override
public int getGroupCount() {
if(arr == null){
return 0;
}
return arr.getData().size();
}
@Override
public int getChildrenCount(int i) {
if(arr == null){
return 0;
}
return arr.getData().get(i).getSpus().size();
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
GroupViewHolder vh;
if(view==null){
view= LayoutInflater.from(mcontext).inflate(R.layout.item_group,null);
vh=new GroupViewHolder();
vh.checkBox=view.findViewById(R.id.checkbox_group);
vh.name=view.findViewById(R.id.group_name);
view.setTag(vh);
}else{
vh= (GroupViewHolder) view.getTag();
}
vh.checkBox.setChecked(arr.getData().get(i).isIscheck());
vh.name.setText(arr.getData().get(i).getName());
vh.checkBox.setTag(i);
vh.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CheckBox checkBox= (CheckBox) view;
boolean checked = checkBox.isChecked();
int groupPosition=Integer.parseInt(checkBox.getTag().toString());
for (int j = 0; j < arr.getData().get(groupPosition).getSpus().size(); j++) {
String praise_num1 = arr.getData().get(groupPosition).getSpus().get(j).getPraise_num();
int i2 = Integer.parseInt(praise_num1);
if(checked) {
totalPrice += i2;
}else{
totalPrice -= i2;
}
}
mtextview.setText("总价:¥"+totalPrice);
arr.getData().get(groupPosition).setIscheck(checked);
selectGroup(groupPosition,checked);
boolean selectAllGroup = isSelectAllGroup();
mcheckbox.setChecked(selectAllGroup);
notifyDataSetChanged();
}
});
return view;
}
private boolean isSelectAllGroup() {
for (int i = 0; i <arr.getData().size() ; i++) {
GoodBean.DataBean dataBean = arr.getData().get(i);
boolean ischeck = dataBean.isIscheck();
if(!ischeck){
return false;
}
}
return true;
}
private void selectGroup(int groupPosition, boolean checked) {
for (int i = 0; i <arr.getData().get(groupPosition).getSpus().size() ; i++) {
GoodBean.DataBean.SpusBean spusBean = arr.getData().get(groupPosition).getSpus().get(i);
spusBean.setCheck(checked);
}
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
ChildViewHolder vh;
if(view==null){
view=LayoutInflater.from(mcontext).inflate(R.layout.item_child,null);
vh=new ChildViewHolder();
vh.checkBox=view.findViewById(R.id.checkbox_child);
vh.name=view.findViewById(R.id.child_name);
vh.price=view.findViewById(R.id.child_price);
vh.img=view.findViewById(R.id.img);
view.setTag(vh);
}else{
vh= (ChildViewHolder) view.getTag();
}
vh.name.setText(arr.getData().get(i).getSpus().get(i1).getName());
vh.price.setText("¥:"+arr.getData().get(i).getSpus().get(i1).getPraise_num());
vh.checkBox.setChecked(arr.getData().get(i).getSpus().get(i1).isCheck());
Glide.with(mcontext).load(arr.getData().get(i).getSpus().get(i1).getPic_url()).into(vh.img);
vh.checkBox.setTag(i+"#"+i1);
vh.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CheckBox checkBox= (CheckBox) view;
String tag= (String) checkBox.getTag();
int groupPosition = Integer.parseInt(tag.split("#")[0]);
int childPosition = Integer.parseInt(tag.split("#")[1]);
GoodBean.DataBean dataBean = arr.getData().get(groupPosition);
GoodBean.DataBean.SpusBean spusBean = dataBean.getSpus().get(childPosition);
spusBean.setCheck(checkBox.isChecked());
String praise_num = spusBean.getPraise_num();
int price = Integer.parseInt(praise_num);
if(checkBox.isChecked()){
totalPrice += price;
}else{
totalPrice -= price;
}
mtextview.setText("总价:¥"+totalPrice);
boolean selectGruop = isSelectGruop(groupPosition);
dataBean.setIscheck(selectGruop);
boolean selectAllGroup = isSelectAllGroup();
mcheckbox.setChecked(selectAllGroup);
notifyDataSetChanged();
}
});
return view;
}
private void sumprice(boolean checked) {
totalPrice=0;
for (int i = 0; i <arr.getData().size() ; i++) {
GoodBean.DataBean dataBean = arr.getData().get(i);
for (int j = 0; j < dataBean.getSpus().size(); j++) {
String praise_num = dataBean.getSpus().get(j).getPraise_num();
int price = Integer.parseInt(praise_num);
if(checked){
totalPrice += price;
}else{
totalPrice = 0;
}
}
}
mtextview.setText("总价:¥"+totalPrice);
}
private boolean isSelectGruop(int gruopPosition){
for (int i = 0; i <arr.getData().get(gruopPosition).getSpus().size() ; i++) {
GoodBean.DataBean.SpusBean spusBean = arr.getData().get(gruopPosition).getSpus().get(i);
boolean check = spusBean.isCheck();
if(!check){
return false;
}
}
return true;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return false;
}
static class GroupViewHolder{
TextView name;
CheckBox checkBox;
}
static class ChildViewHolder{
TextView name,price;
CheckBox checkBox;
ImageView img;
}
}