//自定义MyExpandableListView
public class MyExpandableListView extends ExpandableListView {
public MyExpandableListView(Context context, AttributeSet attrs) {
super(context,attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int i = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, i);
}
}
//mianActivity
public class Main2Activity extends AppCompatActivity implements MianView {
private ExpandableListView exlistview;
private MianPersenterImpl mianPersenter;
private CheckBox checkBox;
private List<ShowBean.DataBean> data;
private TextView sum;
private TextView checked;
private ImageView image_back;
private AdaPter adaPter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
sum = findViewById(R.id.sum);
checked = findViewById(R.id.checked);
exlistview = findViewById(R.id.exlistview);
image_back = findViewById(R.id.image_back);
checkBox = findViewById(R.id.check);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
boolean allCheak = adaPter.isAllCheak();
adaPter.changeAll(!allCheak);
adaPter.notifyDataSetChanged();
refreshAll();
}
});
mianPersenter = new MianPersenterImpl(this);
mianPersenter.getData();
image_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Main2Activity.this, SouActivity.class);
startActivity(intent);
}
});
}
@Override
public void Success(ShowBean showBean) {
data= showBean.getData();
if (data!=null){
runOnUiThread(new Runnable() {
@Override
public void run() {
adaPter = new AdaPter(Main2Activity.this,data);
exlistview.setAdapter(adaPter);
int count = exlistview.getCount();
for (int i=0; i<count; i++){
exlistview.expandGroup(i);
}
adaPter.setCallback(new AdaPter.Callback() {
@Override
public void GoodCartsLitenster(int countyMoney, int countsNum) {
sum.setText("¥:"+countyMoney);
checked.setText("已选("+countsNum+")");
}
});
}
});
}
}
@Override
public void Error(int code) {
}
public void refreshAll(){
boolean allCheak = adaPter.isAllCheak();
checkBox.setChecked(allCheak);
}
adapter
public class AdaPter extends BaseExpandableListAdapter {
private Context context;
private List<ShowBean.DataBean> list;
private ViewHolderOne holderOne;
private ViewHolderTwo holderTwo;
//选中的货物的钱数
private int countsMoney ;
//选中的货物的个数
private int countsNum ;
private Callback callback;
public void setCallback(Callback callback) {
this.callback = callback;
}
public AdaPter(Context context, List<ShowBean.DataBean> list, Callback callback) {
this.context = context;
this.list = list;
this.callback = callback;
}
public AdaPter(Context context, List<ShowBean.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
getcountsMoneyAndNum();
callback.GoodCartsLitenster(countsMoney,countsNum);
}
public void setIsSelect(boolean isSelect){
for(ShowBean.DataBean li:list){
List<ShowBean.DataBean.ListBean> list1= li.getList();
for(ShowBean.DataBean.ListBean l:list1){
if(isSelect){
l.setSelected(0);
}else {
l.setSelected(1);
}
}
}
notifyDataSetChanged();
}
private void getcountsMoneyAndNum() {
countsMoney=0;
countsNum=0;
if(list==null){
return;
}
for(ShowBean.DataBean li:list){
List<ShowBean.DataBean.ListBean> list1= li.getList();
for(ShowBean.DataBean.ListBean l:list1){
if(l.getSelected()==1){
countsMoney+=(l.getNum()*l.getBargainPrice());
countsNum+=l.getNum();
}
}
}
}
@Override
public int getGroupCount() {
return list.size();
}
@Override
public int getChildrenCount(int i) {
return list.get(i).getList().size();
}
@Override
public Object getGroup(int i) {
return list.get(i);
}
@Override
public Object getChild(int i, int i1) {
return list.get(i).getList().get(i1);
}
@Override
public long getGroupId(int i) {
return i+1;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
ViewHolderOne holderOne=null;
if (view==null){
holderOne = new ViewHolderOne();
view=View.inflate(context,R.layout.parelayout,null);
holderOne.parentTitle=view.findViewById(R.id.parent_title);
view.setTag(holderOne);
}else{
holderOne= (ViewHolderOne) view.getTag();
}
holderOne.parentTitle.setText(list.get(i).getSellerName());
return view;
}
@Override
public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {
ViewHolderTwo holderTwo=null;
if (view==null){
holderTwo = new ViewHolderTwo();
view=View.inflate(context,R.layout.item,null);
holderTwo.NowPrice=view.findViewById(R.id.Nowprice);
holderTwo.OldPrice=view.findViewById(R.id.oldprice);
holderTwo.sontitle=view.findViewById(R.id.sontitle);
holderTwo.sonion=view.findViewById(R.id.sonion);
holderTwo.add= view.findViewById(R.id.jia);
holderTwo.contact=view.findViewById(R.id.content);
holderTwo.jian=view.findViewById(R.id.jian);
holderTwo.check=view.findViewById(R.id.soncheck);
view.setTag(holderTwo);
}else {
holderTwo= (ViewHolderTwo) view.getTag();
}
holderTwo.sontitle.setText(this.list.get(i).getList().get(i1).getTitle());
holderTwo.OldPrice.setText("¥"+ this.list.get(i).getList().get(i1).getBargainPrice());
holderTwo.NowPrice.setText("¥"+ this.list.get(i).getList().get(i1).getPrice());
holderTwo.contact.setText(list.get(i).getList().get(i1).getNum()+"");
String str = this.list.get(i).getList().get(i1).getImages().split("\\|")[0];
Glide.with(context).load(str).into(holderTwo.sonion);
boolean allCheak = isAllCheak();
holderTwo.check.setChecked(allCheak);
holderTwo.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int num= list.get(i).getList().get(i1).getNum();
num++;
list.get(i).getList().get(i1).setNum(num);
notifyDataSetChanged();
}
});
holderTwo.jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int num= list.get(i).getList().get(i1).getNum();
if (num>1){
num--;
}else{
num=0;
}
list.get(i).getList().get(i1).setNum(num);
notifyDataSetChanged();
}
});
holderTwo.check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int selected = list.get(i).getList().get(i1).getSelected();
if(selected==0){
list.get(i).getList().get(i1).setSelected(1);
}else if(selected==1){
list.get(i).getList().get(i1).setSelected(0);
}
notifyDataSetChanged();
}
});
return view;
}
//全选调用的方法
public boolean isAllCheak(){
for (int i = 0; i < list.size(); i++) {
List<ShowBean.DataBean.ListBean> list2 = this.list.get(i).getList();
for (int j = 0; j < list2.size(); j++) {
if (list2.get(j).getSelected() == 0){
return false;
}
}
}
return true;
}
public void changeAll(boolean b) {
for (int i = 0; i < list.size(); i++) {
List<ShowBean.DataBean.ListBean> list2 = list.get(i).getList();
for (int j = 0; j < list2.size(); j++) {
list2.get(j).setSelected(b ? 1 : 0);
Log.e("TAG","调用到了");
}
}
}
@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}
class ViewHolderOne{
TextView parentTitle;
}
class ViewHolderTwo{
TextView NowPrice;
TextView OldPrice;
TextView sontitle;
ImageView sonion;
CheckBox check;
Button add;
TextView contact;
Button jian;
}
public interface Callback {
void GoodCartsLitenster(int countyMoney, int countsNum);
}
}
依赖
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.github.bumptech.glide:glide:4.6.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.squareup.picasso:picasso:2.71828'
权限
<uses-permission android:name="android.permission.INTERNET" />