public class MainActivity extends AppCompatActivity implements IMainView {
private ExpandableListView expan;
private CheckBox check_all;
private TextView all_price;
private MyAdapter myAdapter;
private MainPresenter mainPresenter;
private List<DataBean> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
private void initView() {
expan = findViewById(R.id.expan);
check_all = findViewById(R.id.check_All);
all_price = findViewById(R.id.All_price);
}
private void initData() {
mainPresenter = new MainPresenter(this);
mainPresenter.ShowData();;
mainPresenter.setView(this);
check_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (check_all.isChecked()){
setCheckAll(true);
}else {
setCheckAll(false);
}
myAdapter.notifyDataSetChanged();
}
});
/** //全选
select_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MoneyAndCount(select_all.isChecked());
shoppingCartAdapter.notifyDataSetChanged();
}
});*/
}
@Override
public void onSuccess(Object o) {
JsonBean jsonBean =(JsonBean)o;
data = jsonBean.getData();
myAdapter = new MyAdapter(MainActivity.this, data);
expan.setAdapter(myAdapter);
for (int i = 0; i < jsonBean.getData().size(); i++) {
expan.expandGroup(i);
}
}
@Override
public void onFail(String err) {
}
public void setCheckAll(boolean ischeck){
for (int i = 0; i < data.size() ; i++) {
DataBean dataBean = data.get(i);
dataBean.setCheck(ischeck);
List<DataBean.ListBean> list = dataBean.getList();
for (int j = 0; j < list.size(); j++) {
list.get(j).setCheck(ischeck);
}
}
myAdapter.notifyDataSetChanged();
}
/** //定义一个方法计算数量个价钱
public void MoneyAndCount(boolean bool)
{
double totalMoney =0;
int totalNum = 0;
//循环遍历商家。判断商家的状态
for(int a = 0; a< data.size(); a++)
{
JsonBean.DataBean dataBean = data.get(a);
dataBean.setCheck(bool);
List<JsonBean.DataBean.ListBean> list = dataBean.getList();
//循环遍历商品
for(int i =0 ; i<list .size(); i++)
{
list.get(i).setCheck(bool);
totalMoney = totalMoney +(Double.valueOf(list.get(i).getBargainPrice())*Double.valueOf(list.get(i).getNum()));
totalNum = totalNum +Integer.parseInt(list.get(i).getNum()+"");
}
}
if(bool)
{
price_all.setText("总价钱"+totalMoney);
}else{
price_all.setText("总价钱 0.00");
}
}*/
}
class MyAdapter extends BaseExpandableListAdapter {
Context context; List<JsonBean.DataBean> data;
private PresentViewHolder presentViewHolder;
private List<JsonBean.DataBean.ListBean> list;
private int num1=0;
public MyAdapter(Context context, List<JsonBean.DataBean> data) {
this.context=context;
this.data=data;
}
@Override
public int getGroupCount() {
return data.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return data.get(groupPosition).getList().size();
}
@Override
public Object getGroup(int groupPosition) {
return null;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return null;
}
@Override
public long getGroupId(int groupPosition) {
return 0;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(context).inflate(R.layout.present, null);
presentViewHolder = new PresentViewHolder();
presentViewHolder. fuBox = view.findViewById(R.id.fuBox);
presentViewHolder. fuName = view.findViewById(R.id.fuName);
presentViewHolder.fuBox.setChecked(data.get(groupPosition).isCheck());
presentViewHolder.fuName.setText(data.get(groupPosition).getSellerName());
//得到父类的数据
JsonBean.DataBean dataBean = data.get(groupPosition);
//给父类设置点击事件
presentViewHolder.fuBox.setChecked(dataBean.isCheck());
presentViewHolder.fuBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkBox =(CheckBox) v;
boolean checked = checkBox.isChecked();
data.get(groupPosition).setCheck(checked);
selectGroup(groupPosition,checked);
boolean selectAllGroup=isSelectAllGroup();
checkBox.setChecked(selectAllGroup);
notifyDataSetChanged();
}
});
return view;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final ChildViewHolder childViewHolder;
View view = LayoutInflater.from(context).inflate(R.layout.child, null);
childViewHolder = new ChildViewHolder();
childViewHolder. ziBox = view.findViewById(R.id.ziBox);
childViewHolder.Name = view.findViewById(R.id.Name);
childViewHolder. img = view.findViewById(R.id.img);
childViewHolder. price = view.findViewById(R.id.price);
childViewHolder. num = view.findViewById(R.id.num);
Button del = view.findViewById(R.id.del);
Button add = view.findViewById(R.id.add);
childViewHolder.ziBox.setChecked(data.get(groupPosition).getList().get(childPosition).isCheck());
childViewHolder.Name.setText(data.get(groupPosition).getList().get(childPosition).getTitle());
childViewHolder.price.setText(data.get(groupPosition).getList().get(childPosition).getPrice());
childViewHolder.num.setText(data.get(groupPosition).getList().get(childPosition).getNum()+"");
Glide.with(context)
.load(data.get(groupPosition)
.getList().get(childPosition)
.getDetailUrl())
.into(childViewHolder.img);
//得到子条目的数据
list = data.get(groupPosition).getList();
//给子条目设置点击事件
childViewHolder.ziBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkBox =(CheckBox)v;
//得到父条目数据
JsonBean.DataBean dataBean = data.get(groupPosition);
JsonBean.DataBean.ListBean listBean = data.get(groupPosition).getList().get(childPosition);
listBean.setCheck(checkBox.isChecked());
boolean selectGroup=isSelectGroup(groupPosition);
dataBean.setCheck(selectGroup);
boolean selectAllGroup=isSelectAllGroup();
checkBox.setChecked(selectAllGroup);
notifyDataSetChanged();
}
});
num1=data.get(groupPosition).getList().get(childPosition).getNum();
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
num1++;
list.get(childPosition).setNum(num1);
childViewHolder.num.setText(num1+"");
}
});
del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (num1<=1){
Toast.makeText(context,"不能再少了",Toast.LENGTH_SHORT).show();
return;
}else {
num1--;
list.get(childPosition).setNum(num1);
childViewHolder.num.setText(num1+"");
}
}
});
return view;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
class PresentViewHolder{
CheckBox fuBox;
TextView fuName;
}
class ChildViewHolder{
CheckBox ziBox;
TextView Name;
TextView price;
TextView num;
ImageView img;
}
private void selectGroup(int groupPosition, boolean checked) {
for (int i = 0; i <data.get(groupPosition).getList().size() ; i++) {
JsonBean.DataBean.ListBean listBean = data.get(groupPosition).getList().get(i);
listBean.setCheck(checked);
}
}
private boolean isSelectAllGroup() {
for (int i = 0; i <data.size() ; i++) {
JsonBean.DataBean dataBean = data.get(i);
boolean check =dataBean.isCheck();
if (!check){
return false;
}
}
return true;
}
private boolean isSelectGroup(int groupPosition) {
for (int i = 0; i <data.get(groupPosition).getList().size() ; i++) {
JsonBean.DataBean.ListBean listBean = data.get(groupPosition).getList().get(i);
boolean check=listBean.isCheck();
if (!check){
return false;
}
}
return true;
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".view.activity.MainActivity">
<ExpandableListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/expan"></ExpandableListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:background="#999999"
android:orientation="horizontal">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/check_All"/>
<TextView
android:id="@+id/All_price"
android:layout_gravity="center_vertical"
android:text="总价:¥0.00"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<CheckBox
android:id="@+id/ziBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="30dp"/>
<ImageView
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginLeft="35dp"
android:id="@+id/img"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/Name"
android:layout_width="match_parent"
android:textSize="20dp"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/price"
android:gravity="center"
android:layout_width="match_parent"
android:textSize="24dp"
android:textColor="#ff1a00"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/add"
android:text="+"/>
<TextView
android:id="@+id/num"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/del"
android:text="-"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:clickable="true"
android:id="@+id/fuBox"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fuName"/>
</LinearLayout>