//购物车view层
public interface MainSelect {
void getSelectBean(MySelectBean mySelectBean);
}
//购物车activity
public class MyGouWuCheActivity extends AppCompatActivity implements MainSelect, View.OnClickListener,MainDingDan {
private MyExpandableListView myexpandable_listview;
private CheckBox check_all;
private TextView text_sumprice;
private TextView text_sumnum;
private PresenterSelect presenterSelect;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==0){
MyPriceSumNum myPriceSumNum= (MyPriceSumNum) msg.obj;
text_sumprice.setText("合计"+myPriceSumNum.getPrice());
text_sumnum.setText("去结算("+myPriceSumNum.getNum()+")");
}
}
};
private MyGouWuCheAdapter adapter;
private MySelectBean mySelectBean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_gou_wu_che);
myexpandable_listview = findViewById(R.id.myexpandable_listview);
check_all = findViewById(R.id.check_all);
text_sumprice = findViewById(R.id.text_sumprice);
text_sumnum = findViewById(R.id.text_sumnum);
check_all.setOnClickListener(this);
text_sumnum.setOnClickListener(this);
presenterSelect = new PresenterSelect(this);
}
@Override
protected void onResume() {
super.onResume();
presenterSelect.getSelectUrl(ApiUrl.select);
}
@Override
public void getSelectBean(final MySelectBean mySelectBean) {
this.mySelectBean = mySelectBean;
runOnUiThread(new Runnable() {
@Override
public void run() {
if (mySelectBean!=null){
for (int i=0;i<mySelectBean.getData().size();i++){
if (ChildInGroup(mySelectBean,i)){
mySelectBean.getData().get(i).setCheck_group(true);
}
}
check_all.setChecked(myGroupChecked(mySelectBean));
adapter = new MyGouWuCheAdapter(MyGouWuCheActivity.this, mySelectBean,presenterSelect,handler);
myexpandable_listview.setAdapter(adapter);
for (int i=0;i<mySelectBean.getData().size();i++){
myexpandable_listview.expandGroup(i);
}
adapter.setPriceNum();
}
}
});
}
private boolean myGroupChecked(MySelectBean mySelectBean) {
List<MySelectBean.DataBean> data = mySelectBean.getData();
for (int i=0;i<data.size();i++){
if (!data.get(i).isCheck_group()){
return false;
}
}
return true;
}
private boolean ChildInGroup(MySelectBean mySelectBean, int i) {
List<MySelectBean.DataBean.ListBean> list = mySelectBean.getData().get(i).getList();
for (int j=0;j<list.size();j++){
if (list.get(j).getSelected()==0){
return false;
}
}
return true;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.check_all:
adapter.setchildcheckAll(check_all.isChecked());
break;
case R.id.text_sumnum:
double price=0;
int num=0;
for (int i=0;i<mySelectBean.getData().size();i++){
List<MySelectBean.DataBean.ListBean> listBeans = mySelectBean.getData().get(i).getList();
for (int j=0;j<listBeans.size();j++){
price+=listBeans.get(j).getBargainPrice()*listBeans.get(j).getNum();
num+=listBeans.get(j).getNum();
}
}
DecimalFormat decimalFormat = new DecimalFormat("0.00");
String format = decimalFormat.format(price);
Log.d("+++++++++++++",format);
PresenterDingDan presenterDingDan = new PresenterDingDan(this);
presenterDingDan.getCreateUrl(ApiUrl.create,format);
break;
}
}
@Override
public void getCreateBean(MyCreateDingDanBean myCreateDingDanBean) {
if (myCreateDingDanBean!=null){
if (myCreateDingDanBean.getCode().equals("0")){
Intent intent = new Intent(MyGouWuCheActivity.this, DingDanActivity.class);
startActivity(intent);
}else {
Toast.makeText(MyGouWuCheActivity.this,myCreateDingDanBean
.getMsg(),Toast.LENGTH_LONG).show();
}
}
}
@Override
public void getDingDanLieBiaoBean(MyDingDanLieBiaoBean myDingDanLieBiaoBean) {
}
}
//presenter层接口
public interface PresenterSelectPort {
void getSelectBean(MySelectBean mySelectBean);
}
//presenter实体类
public class PresenterSelect implements PresenterSelectPort{
private MainSelect mainSelect;
private final ModelSelect modelSelect;
public PresenterSelect(MainSelect mainSelect) {
modelSelect = new ModelSelect(this);
this.mainSelect = mainSelect;
}
public void getSelectUrl(String select) {
modelSelect.getSelectUrl(select);
}
@Override
public void getSelectBean(MySelectBean mySelectBean) {
mainSelect.getSelectBean(mySelectBean);
}
}
//model层
public class ModelSelect {
private PresenterSelect presenterSelect;
public ModelSelect(PresenterSelect presenterSelect) {
this.presenterSelect = presenterSelect;
}
public void getSelectUrl(String select) {
Map<String, String> params=new HashMap<>();
params.put("uid","4427");
//自己创建bean类 select购物车接口
OkHttp3Util.doPost(select, params, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()){
String json = response.body().string();
MySelectBean mySelectBean = new Gson().fromJson(json, MySelectBean.class);
presenterSelect.getSelectBean(mySelectBean);
}
}
});
}
}
//购物车的适配器
public class MyGouWuCheAdapter extends BaseExpandableListAdapter {
private final Context context;
private final MySelectBean mySelectBean;
private PresenterSelect presenterSelect;
private Handler handler;
private int indexchild;
private int childAll;
public MyGouWuCheAdapter(Context context, MySelectBean mySelectBean, PresenterSelect presenterSelect, Handler handler) {
this.context = context;
this.mySelectBean = mySelectBean;
this.presenterSelect = presenterSelect;
this.handler = handler;
}
@Override
public int getGroupCount() {
return mySelectBean.getData().size();
}
@Override
public int getChildrenCount(int groupPosition) {
return mySelectBean.getData().get(groupPosition).getList().size();
}
@Override
public Object getGroup(int groupPosition) {
return mySelectBean.getData().get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return mySelectBean.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(final int groupPosition, boolean isExpanded, View view, ViewGroup parent) {
final MyGroupHolder holder;
if (view==null){
view=View.inflate(context, R.layout.item_group,null);
holder=new MyGroupHolder();
holder.check_group=view.findViewById(R.id.check_group);
holder.text_group=view.findViewById(R.id.text_group);
view.setTag(holder);
}else {
holder= (MyGroupHolder) view.getTag();
}
holder.check_group.setChecked(mySelectBean.getData().get(groupPosition).isCheck_group());
holder.text_group.setText(mySelectBean.getData().get(groupPosition).getSellerName());
holder.check_group.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
indexchild = 0;
MySelectBean.DataBean dataBean = mySelectBean.getData().get(groupPosition);
boolean checked = holder.check_group.isChecked();
childGroupAll(dataBean,checked);
}
});
return view;
}
private void childGroupAll(final MySelectBean.DataBean dataBean, final boolean checked) {
final MySelectBean.DataBean.ListBean listBean = dataBean.getList().get(indexchild);
Map<String, String> params=new HashMap<>();
params.put("uid","4427");
params.put("sellerid", String.valueOf(listBean.getSellerid()));
params.put("pid", String.valueOf(listBean.getPid()));
params.put("selected", String.valueOf(checked?1:0));
params.put("num",String.valueOf(listBean.getNum()));
OkHttp3Util.doPost(ApiUrl.gengxin, params, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()){
indexchild++;
if (indexchild<dataBean.getList().size()){
childGroupAll(dataBean,checked);
}else {
presenterSelect.getSelectUrl(ApiUrl.select);
}
}
}
});
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View view, ViewGroup parent) {
MyChildHolder holder;
if (view==null){
view=View.inflate(context,R.layout.item_child,null);
holder=new MyChildHolder();
holder.check_child=view.findViewById(R.id.check_child);
holder.image_child=view.findViewById(R.id.image_child);
holder.text_titlechild=view.findViewById(R.id.text_titlechild);
holder.text_pricechild=view.findViewById(R.id.text_pricechild);
holder.text_jianchild=view.findViewById(R.id.text_jianchild);
holder.text_numchild=view.findViewById(R.id.text_numchild);
holder.text_jiachild=view.findViewById(R.id.text_jiachild);
holder.text_delete=view.findViewById(R.id.text_delete);
view.setTag(holder);
}else {
holder= (MyChildHolder) view.getTag();
}
final MySelectBean.DataBean.ListBean listBean = mySelectBean.getData().get(groupPosition).getList().get(childPosition);
String[] split = listBean.getImages().split("\\|");
Glide.with(context).load(split[0]).into(holder.image_child);
holder.text_titlechild.setText(listBean.getTitle());
holder.text_pricechild.setText("¥"+listBean.getBargainPrice());
holder.check_child.setChecked(listBean.getSelected()==0?false:true);
holder.text_numchild.setText(listBean.getNum()+"");
holder.check_child.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//uid=71&sellerid=1&pid=1&selected=0&num=10
Map<String, String> params=new HashMap<>();
params.put("uid","4427");
params.put("sellerid", String.valueOf(listBean.getSellerid()));
params.put("pid", String.valueOf(listBean.getPid()));
params.put("selected", String.valueOf(listBean.getSelected()==0?1:0));
params.put("num",String.valueOf(listBean.getNum()));
OkHttp3Util.doPost(ApiUrl.gengxin, params, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()){
presenterSelect.getSelectUrl(ApiUrl.select);
}
}
});
}
});
holder.text_jianchild.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int num = listBean.getNum();
if (num==1){
return;
}
Map<String, String> params=new HashMap<>();
params.put("uid","4427");
params.put("sellerid", String.valueOf(listBean.getSellerid()));
params.put("pid", String.valueOf(listBean.getPid()));
params.put("selected", String.valueOf(listBean.getSelected()));
params.put("num",String.valueOf(num-1));
OkHttp3Util.doPost(ApiUrl.gengxin, params, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()){
presenterSelect.getSelectUrl(ApiUrl.select);
}
}
});
}
});
holder.text_jiachild.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, String> params=new HashMap<>();
params.put("uid","4427");
params.put("sellerid", String.valueOf(listBean.getSellerid()));
params.put("pid", String.valueOf(listBean.getPid()));
params.put("selected", String.valueOf(listBean.getSelected()));
params.put("num",String.valueOf(listBean.getNum()+1));
OkHttp3Util.doPost(ApiUrl.gengxin, params, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()){
presenterSelect.getSelectUrl(ApiUrl.select);
}
}
});
}
});
holder.text_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, String> params=new HashMap<>();
params.put("uid","4427");
params.put("pid", String.valueOf(listBean.getPid()));
OkHttp3Util.doPost(ApiUrl.delete, params, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()){
presenterSelect.getSelectUrl(ApiUrl.select);
}
}
});
}
});
return view;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public void setPriceNum() {
double price=0;
int num=0;
for (int i=0;i<mySelectBean.getData().size();i++){
List<MySelectBean.DataBean.ListBean> listBeans = mySelectBean
.getData().get(i).getList();
for (int j=0;j<listBeans.size();j++){
if (listBeans.get(j).getSelected()==1){
price+=listBeans.get(j).getBargainPrice()*listBeans
.get(j).getNum();
num+=listBeans.get(j).getNum();
}
}
}
DecimalFormat decimalFormat = new DecimalFormat("0.00");
String format = decimalFormat.format(price);
MyPriceSumNum myPriceSumNum = new MyPriceSumNum(format, num);
Message msg=Message.obtain();
msg.obj=myPriceSumNum;
msg.what=0;
handler.sendMessage(msg);
}
public void setchildcheckAll(boolean checked) {
childAll = 0;
ArrayList<MySelectBean.DataBean.ListBean> listBeans = new ArrayList<>();
for (int i=0;i<mySelectBean.getData().size();i++){
MySelectBean.DataBean dataBean = mySelectBean.getData().get(i);
for (int j=0;j<dataBean.getList().size();j++){
listBeans.add(dataBean.getList().get(j));
}
}
AllChild(checked,listBeans);
}
private void AllChild(final boolean checked, final ArrayList<MySelectBean.DataBean.ListBean> listBeans) {
MySelectBean.DataBean.ListBean listBean = listBeans.get(childAll);
Map<String, String> params=new HashMap<>();
params.put("uid","4427");
params.put("sellerid", String.valueOf(listBean.getSellerid()));
params.put("pid", String.valueOf(listBean.getPid()));
params.put("selected", String.valueOf(checked?1:0));
params.put("num",String.valueOf(listBean.getNum()));
OkHttp3Util.doPost(ApiUrl.gengxin, params, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()){
childAll++;
if (childAll<listBeans.size()){
AllChild(checked,listBeans);
}else {
presenterSelect.getSelectUrl(ApiUrl.select);
}
}
}
});
}
class MyGroupHolder{
CheckBox check_group;
TextView text_group;
}
class MyChildHolder{
CheckBox check_child;
ImageView image_child;
TextView text_titlechild;
TextView text_pricechild;
TextView text_jianchild;
TextView text_numchild;
TextView text_jiachild;
TextView text_delete;
}
}
//订单实现可参考http://blog.csdn.net/wei844067872/article/details/79059193
//购物布局http://blog.csdn.net/wei844067872/article/details/79083827