<com.handmark.pulltorefresh.library.PullToRefreshExpandableListView |
android:layout_below= "@id/r" |
android:id= "@+id/expand_list" |
android:layout_width= "match_parent" |
android:layout_height= "570dp" /> |
/////////////////////////////////////////////////////// |
package com.bwie.text_a; |
import android.app.ExpandableListActivity; |
import android.support.v7.app.AppCompatActivity; |
import android.os.Bundle; |
import android.util.Log; |
import android.view.View; |
import android.widget.Button; |
import android.widget.CheckBox; |
import android.widget.TextView; |
import android.widget.Toast; |
import com.bwie.bean.Bean; |
import com.google.gson.Gson; |
import com.handmark.pulltorefresh.library.PullToRefreshBase; |
import com.handmark.pulltorefresh.library.PullToRefreshExpandableListView; |
import com.handmark.pulltorefresh.library.PullToRefreshListView; |
import com.lidroid.xutils.HttpUtils; |
import com.lidroid.xutils.exception.HttpException; |
import com.lidroid.xutils.http.ResponseInfo; |
import com.lidroid.xutils.http.callback.RequestCallBack; |
import com.lidroid.xutils.http.client.HttpRequest; |
import java.util.ArrayList; |
import java.util.List; |
////////////********************/ExpandableListActivity |
public |
class |
MainActivity extends ExpandableListActivity implements PullToRefreshBase.OnRefreshListener2, Myadapter.CheckInterface { |
private PullToRefreshExpandableListView mExpandList; |
private List<String> stringList = new ArrayList<>(); |
private List<Bean.DataBean> dataBeen = new ArrayList<Bean.DataBean>(); |
private TextView count; |
private |
Myadapter myadapter; |
private TextView count_price; |
@Override |
protected void onCreate(Bundle savedInstanceState) { |
super .onCreate(savedInstanceState); |
setContentView(R.layout.activity_main); |
mExpandList = (PullToRefreshExpandableListView) findViewById(R.id.expand_list); |
count = (TextView) findViewById(R.id.count); |
count_price = (TextView) findViewById(R.id.count_price); |
Button huishou = (Button) findViewById(R.id.huishou); |
//可以刷新加载 |
mExpandList.setMode(PullToRefreshBase.Mode.BOTH); |
mExpandList.setOnRefreshListener( this ); |
//初始化数据 |
getdate(); |
//回收按钮监听 |
huishou.setOnClickListener( new View.OnClickListener() { |
@Override |
public void onClick(View v) { |
List<Bean.DataBean.DatasBean> datasList = new ArrayList<Bean.DataBean.DatasBean>(); |
List<Bean.DataBean> dataBeanList = new ArrayList<Bean.DataBean>(); |
//遍历集合所有数据 |
for ( int i = 0 ; i < dataBeen.size(); i++) { |
//判断一级复选框是否选中 |
if (dataBeen.get(i).isGroupCheck()) { |
//选中则存进集合 |
dataBeanList.add(dataBeen.get(i)); |
} else { |
//如果一级复选框不是选中状态则遍历每个一级列表中的二级条目 |
List<Bean.DataBean.DatasBean> datas = dataBeen.get(i).getDatas(); |
for ( int j = 0 ; j < datas.size(); j++) { |
//判断每个二级条目是否选中 |
if (datas.get(j).isChildcheckBox()) { |
//选中则添加进集合 |
datasList.add(dataBeen.get(i).getDatas().get(j)); |
} |
//删除二级条目集合 |
dataBeen.get(i).getDatas().removeAll(datasList); |
} |
} |
} |
//删除数据 |
dataBeen.removeAll(dataBeanList); |
//刷新适配器 |
myadapter.notifyDataSetChanged(); |
//计算价格 |
setprice(); |
} |
}); |
} |
//请求数据 |
public void getdate() { |
HttpUtils httpUtils = new HttpUtils(); |
httpUtils.send(HttpRequest.HttpMethod.GET, "http://mock.eoapi.cn/success/9ghtceuvzUWfvffRK6pts8zaEjGYWrkK" , new RequestCallBack<String>() { |
@Override |
public void onSuccess(ResponseInfo<String> responseInfo) { |
String result = responseInfo.result; |
Bean bean = new Gson().fromJson(result, Bean. class ); |
dataBeen.addAll(bean.getData()); |
//Toast.makeText(MainActivity.this,"数据请求成功"+dataBeen.size(),Toast.LENGTH_SHORT).show(); |
myadapter = new Myadapter(MainActivity. this , dataBeen); |
myadapter.setCheckInterface(MainActivity. this ); |
//setListAdapter(myadapter); |
MainActivity. this .setListAdapter(myadapter); |
} |
@Override |
public void onFailure(HttpException e, String s) { |
Toast.makeText(MainActivity. this , "数据请求失败" , Toast.LENGTH_SHORT).show(); |
} |
}); |
} |
@Override |
public void onPullDownToRefresh(PullToRefreshBase refreshView) { |
//getdate(); |
/*if(myadapter!=null){ |
Toast.makeText(this,"下拉刷新数据",Toast.LENGTH_SHORT).show(); |
myadapter.notifyDataSetChanged(); |
mExpandList.postDelayed(new Runnable() { |
@Override |
public void run() { |
mExpandList.onRefreshComplete(); |
} |
}, 1000); |
}*/ |
} |
@Override |
public void onPullUpToRefresh(PullToRefreshBase refreshView) { |
//getdate(); |
/*if(myadapter!=null){ |
Toast.makeText(this,"上拉加载数据",Toast.LENGTH_SHORT).show(); |
myadapter.notifyDataSetChanged(); |
mExpandList.postDelayed(new Runnable() { |
@Override |
public void run() { |
mExpandList.onRefreshComplete(); |
} |
}, 1000); |
}*/ |
} |
//一级条目复选框监听 |
@Override |
public void groupCheck( int groupPosition, boolean isChecked) { |
//判断是否选中 |
if (isChecked) { |
//则该一级条目中所有子条目选中 |
List<Bean.DataBean.DatasBean> datas = dataBeen.get(groupPosition).getDatas(); |
for ( int i = 0 ; i < datas.size(); i++) { |
datas.get(i).setChildcheckBox(isChecked); |
} |
} else { |
//否则全不选中 |
List<Bean.DataBean.DatasBean> datas = dataBeen.get(groupPosition).getDatas(); |
for ( int i = 0 ; i < datas.size(); i++) { |
datas.get(i).setChildcheckBox(isChecked); |
} |
} |
//刷新,计价 |
myadapter.notifyDataSetChanged(); |
setprice(); |
} |
//二级条目复选框监听 |
@Override |
public void childCheck( int groupPosition, int childPosition, boolean isChecked) { |
//获取该一级条目中子元素的集合 |
List<Bean.DataBean.DatasBean> datas = dataBeen.get(groupPosition).getDatas(); |
//判断该条目是否选中 |
if (isChecked) { |
dataBeen.get(groupPosition).getDatas().get(childPosition).setChildcheckBox(isChecked); |
} else { |
dataBeen.get(groupPosition).getDatas().get(childPosition).setChildcheckBox(isChecked); |
} |
//如果该组元素下所有子元素全部选中则组元素选中 |
int flag = 0 ; |
for ( int i = 0 ; i < datas.size(); i++) { |
if (datas.get(i).isChildcheckBox()) { |
flag++; |
} else { |
flag--; |
} |
} |
if (flag == datas.size()) { |
dataBeen.get(groupPosition).setGroupCheck( true ); |
} else { |
dataBeen.get(groupPosition).setGroupCheck( false ); |
} |
myadapter.notifyDataSetChanged(); |
setprice(); |
} |
private int num = 0 ; |
private int price = 0 ; |
//计价 |
public void setprice() { |
//每次重新计价 |
num = 0 ; |
price = 0 ; |
for ( int i = 0 ; i < dataBeen.size(); i++) { |
List<Bean.DataBean.DatasBean> datas = dataBeen.get(i).getDatas(); |
for ( int j = 0 ; j < datas.size(); j++) { |
Bean.DataBean.DatasBean datasBean = datas.get(j); |
if (datasBean.childcheckBox) { |
num++; |
price += datasBean.getPrice(); |
} |
} |
} |
count.setText(num + "台旧机" ); |
count_price.setText( "合计:¥" + price); |
} |
} |
//////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
/*适配器*/ |
package com.bwie.text_a; |
import android.content.Context; |
import android.util.Log; |
import android.view.View; |
import android.view.ViewGroup; |
import android.widget.BaseAdapter; |
import android.widget.BaseExpandableListAdapter; |
import android.widget.CheckBox; |
import android.widget.CompoundButton; |
import android.widget.TextView; |
import android.widget.Toast; |
import com.bwie.bean.Bean; |
import java.util.List; |
public |
class |
Myadapter extends BaseExpandableListAdapter { |
private Context context; |
private List<Bean.DataBean> dataBeen; |
private CheckInterface checkInterface; |
public Myadapter(Context context, List<Bean.DataBean> dataBeen) { |
this .context = context; |
this .dataBeen = dataBeen; |
} |
public void setCheckInterface(CheckInterface checkInterface) { |
this .checkInterface = checkInterface; |
} |
@Override |
public int getGroupCount() { |
return dataBeen.size(); |
} |
@Override |
public int getChildrenCount( int groupPosition) { |
return dataBeen.get(groupPosition).getDatas().size(); |
} |
@Override |
public Object getGroup( int groupPosition) { |
return dataBeen.get(groupPosition).getTitle(); |
} |
@Override |
public Object getChild( int groupPosition, int childPosition) { |
return dataBeen.get(groupPosition).getDatas().get(childPosition).getType_name(); |
} |
@Override |
public long getGroupId( int groupPosition) { |
return groupPosition; |
} |
@Override |
public long getChildId( int groupPosition, int childPosition) { |
return childPosition; |
} |
@Override |
public boolean hasStableIds() { |
return false ; |
} |
@Override |
public View getGroupView( final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { |
//GroupViewHolder groupViewHolder=null; |
//if(convertView==null){ |
// groupViewHolder=new GroupViewHolder(); |
convertView=View.inflate(context,R.layout.group_item, null ); |
TextView group_title= (TextView) convertView.findViewById(R.id.group_title); |
TextView group_title_id= (TextView) convertView.findViewById(R.id.group_title_id); |
CheckBox group_check= (CheckBox) convertView.findViewById(R.id.group_check); |
// convertView.setTag(groupViewHolder); |
// }else { |
// groupViewHolder= (GroupViewHolder) convertView.getTag(); |
// } |
group_title.setText(dataBeen.get(groupPosition).getTitle()); |
group_title_id.setText(dataBeen.get(groupPosition).getTitle_id()); |
group_check.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() { |
@Override |
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { |
if (checkInterface!= null ){ |
dataBeen.get(groupPosition).setGroupCheck(isChecked); |
checkInterface.groupCheck(groupPosition,isChecked); |
} |
} |
}); |
group_check.setChecked(dataBeen.get(groupPosition).isGroupCheck()); |
return convertView; |
} |
class GroupViewHolder{ |
TextView group_title,group_title_id; |
CheckBox group_check; |
} |
@Override |
public View getChildView( final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { |
// ChildViewHolder childViewHolder=null; |
// if(convertView==null){ |
// childViewHolder=new ChildViewHolder(); |
convertView=View.inflate(context,R.layout.child_item, null ); |
CheckBox child_check= (CheckBox) convertView.findViewById(R.id.child_check); |
TextView miaoshu= (TextView) convertView.findViewById(R.id.miaoshu); |
TextView time= (TextView) convertView.findViewById(R.id.time); |
TextView child_title= (TextView) convertView.findViewById(R.id.child_title); |
TextView price= (TextView) convertView.findViewById(R.id.price); |
// |
// |
//convertView.setTag(childViewHolder); |
// }else { |
// childViewHolder= (ChildViewHolder) convertView.getTag(); |
// } |
child_title.setText(dataBeen.get(groupPosition).getDatas().get(childPosition).getType_name()); |
miaoshu.setText(dataBeen.get(groupPosition).getDatas().get(childPosition).getMsg()); |
time.setText(dataBeen.get(groupPosition).getDatas().get(childPosition).getAdd_time()); |
price.setText( "¥" +dataBeen.get(groupPosition).getDatas().get(childPosition).getPrice()); |
child_check.setChecked(dataBeen.get(groupPosition).getDatas().get(childPosition).isChildcheckBox()); |
child_check.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() { |
@Override |
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { |
if (checkInterface!= null ){ |
checkInterface.childCheck(groupPosition,childPosition,isChecked); |
} |
} |
}); |
return convertView; |
} |
class ChildViewHolder{ |
TextView child_title,miaoshu,time,price; |
CheckBox child_check; |
} |
@Override |
public boolean isChildSelectable( int groupPosition, int childPosition) { |
return true ; |
} |
//复选框接口 |
public interface CheckInterface{ |
void groupCheck( int groupPosition, boolean isChecked); |
void childCheck( int groupPosition, int childPosition, boolean isChecked); |
} |
} |