二级购物车

这里写图片描述

加依赖

compile ‘com.android.support.constraint:constraint-layout:1.0.2’
compile ‘com.google.code.gson:gson:2.2.4’
compile ‘com.github.bumptech.glide:glide:3.7.0’
compile ‘com.squareup.okhttp3:okhttp:3.4.1’
compile ‘com.squareup.okio:okio:1.5.0’

加权限

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

加权限的详细位置

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.administrator.day_21">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".IView.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".IView.GoodsActivity"></activity>
    </application>

</manifest>

布局

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="com.example.administrator.day_21.IView.MainActivity"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/img"
        android:layout_width="match_parent"
        android:layout_height="302dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="vertical">

            <TextView
                android:id="@+id/title_aa"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25dp" />

            <TextView
                android:id="@+id/yuanjia"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView
                android:id="@+id/youhui"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#ff0000" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                android:id="@+id/gouwu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="购物车" />

            <View
                android:layout_width="0.75dp"
                android:layout_height="match_parent"
                android:background="#000000" />

            <Button
                android:id="@+id/jrgwc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="加入购物车" />


        </LinearLayout>
    </LinearLayout>
</LinearLayout>

activity_goods.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="购物车" />

    <View
        android:layout_width="match_parent"
        android:layout_height="0.75dp"
        android:background="#000000"></View>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        android:orientation="vertical">

        <ExpandableListView
            android:id="@+id/Elv"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </ExpandableListView>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <CheckBox
                android:id="@+id/ckb"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

            </CheckBox>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="全选/反选">
            </TextView>

            <TextView
                android:id="@+id/sum"
                android:textColor="#ff0000"
                android:layout_marginLeft="170dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="总价:0.0">
            </TextView>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

activity_splash.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_centerHorizontal="true"
        android:id="@+id/img"
        android:src="@mipmap/ic_launcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

childview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:orientation="horizontal">

    <CheckBox
        android:id="@+id/Chcb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical" />

    <ImageView
        android:id="@+id/Cimg"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_gravity="center_horizontal"
        android:src="@mipmap/ic_launcher" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:gravity="center_vertical"
        android:orientation="vertical">

        <TextView
            android:id="@+id/Ctv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:text="购物车" />

        <TextView
            android:id="@+id/Cyj"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="购物车" />
    </LinearLayout>

</LinearLayout>

groupview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <CheckBox
        android:id="@+id/Gcb"
        android:layout_gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/title_bb"
        android:textSize="30dp"
        android:layout_gravity="center_horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="购物车" />
</LinearLayout>

res下anim
enter.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromAlpha="1.0"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:toAlpha="0.0">


</alpha>

out.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:toAlpha="1.0">
</alpha>

IModel 层

AddListener.java

package com.example.administrator.day_21.IModel;

public interface AddListener {
    void Addsucces(String json);
    void AddError(String json);
}

GoodsLoginListener .java

package com.example.administrator.day_21.IModel;

public interface GoodsLoginListener {
    void GoodsloginSccous(String json);
    void GoodsloginError(String json);

}

LoadListtener .java

package com.example.administrator.day_21.IModel;

public interface LoadListtener {
    void LoadSccuer(String json);
    void LoadError(String json);
}

Model.java

package com.example.administrator.day_21.IModel;

import com.example.administrator.day_21.JavaBean.GoodsBean;

import java.util.Map;

/**
 * Created by lenovo on 2018/1/10.
 */

public interface Model {
    //详情页面
    void xqSccusser(String url, Map<String, String> pams, LoginListener loginListener);
    //数据页面
    void GoodsSccusser(String url, Map<String, String> pams, GoodsLoginListener goodsLoginListener);
    //总和
    double sumV(GoodsBean goodsBean);

    //添加到购物车的而方法
    void addToCart(String url, Map<String, String> parms, AddListener addListener);


}

ModelImp.java

package com.example.administrator.day_21.IModel;

import android.util.Log;

import com.example.administrator.day_21.JavaBean.GoodsBean;
import com.example.administrator.day_21.OkhttpUils.OkHttpjiexi;

import java.util.List;
import java.util.Map;

public class ModelImp implements Model {
    //详情页面
    @Override
    public void xqSccusser(String url, Map<String, String> pams, final LoginListener loginListener) {
        OkHttpjiexi okHttpjiexi = new OkHttpjiexi();
        okHttpjiexi.okPost(url, pams);
        okHttpjiexi.setLoadListtener(new LoadListtener() {
            @Override
            public void LoadSccuer(String json) {
                loginListener.xqloginSccous(json);
            }

            @Override
            public void LoadError(String json) {
                loginListener.xqloginError(json);
            }
        });
    }

    @Override
    public void GoodsSccusser(String url, Map<String, String> pams, final GoodsLoginListener goodsLoginListener) {
        OkHttpjiexi okHttpjiexi = new OkHttpjiexi();
        okHttpjiexi.okPost(url, pams);
        okHttpjiexi.setLoadListtener(new LoadListtener() {
            @Override
            public void LoadSccuer(String json) {
                goodsLoginListener.GoodsloginSccous(json);

            }

            @Override
            public void LoadError(String json) {
                goodsLoginListener.GoodsloginError(json);
            }
        });
    }

    @Override
    public double sumV(GoodsBean goodsBean) {

        double sum = 0;
        List<GoodsBean.DataBean> list = goodsBean.getData();

        Log.e("TAG","DSADSSA"+goodsBean.toString()+"");

        for (int i = 0; i < list.size(); i++) {
            List<GoodsBean.DataBean.ListBean> chflas = list.get(i).getList();

            for (int j = 0; j < chflas.size(); j++) {
                Boolean chflas1 = chflas.get(j).getChflas();
                if (chflas1) {
                    double price = chflas.get(j).getPrice();
                    sum = sum + price;
                }
            }
        }
        return sum;
 }

    @Override
    public void addToCart(String url, Map<String, String> parms, final AddListener addListener) {
        OkHttpjiexi okHttpjiexi = new OkHttpjiexi();
        okHttpjiexi.okPost(url, parms);
        okHttpjiexi.setLoadListtener(new LoadListtener() {
            @Override
            public void LoadSccuer(String json) {
                addListener.Addsucces(json);

   }

            @Override
            public void LoadError(String json) {
                addListener.AddError(json);
            }
        });
    }
}

IView层

AddView.java

package com.example.administrator.day_21.IView;

import com.example.administrator.day_21.JavaBean.GoodsBean;

public interface AddView {

    void showDetailData(GoodsBean goodsBean);

    void jumpToCatActivity();

    void addToCart();
    //获取PID的方法
    String getPid();
    //成功的提示
    void showAddSucess();
    //失败的提示
    void shoAddError();

}

GoodsActivity.java

package com.example.administrator.day_21.IView;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.TextView;

import com.example.administrator.day_21.IModel.ModelImp;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import com.example.administrator.day_21.R;
import com.example.administrator.day_21.presenter.IpresenterImp;

import java.util.List;

public class GoodsActivity extends AppCompatActivity implements GoodsView,sumView{

    private ExpandableListView elv;
    private CheckBox ckb;
    private TextView sum1;
    private MyBaseApader myBaseApader;
    private GoodsBean goodsBean;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_goods);
        inview();
        IpresenterImp ipresenterImp = new IpresenterImp();
        ipresenterImp.showGoodsdate(this, new ModelImp(), this);

    }

    public void inview() {
        elv = (ExpandableListView) findViewById(R.id.Elv);
        ckb = (CheckBox) findViewById(R.id.ckb);

        sum1 = (TextView) findViewById(R.id.sum);
        ckb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<GoodsBean.DataBean> data = goodsBean.getData();
                for (int i = 0; i < data.size(); i++) {
                    data.get(i).setGflas(!data.get(i).getGflas());
                    //子元素
                    List<GoodsBean.DataBean.ListBean> list = data.get(i).getList();
                    for (int j = 0; j < list.size(); j++) {
                        list.get(j).setChflas(!list.get(j).getChflas());
                    }
                }
//                通知刷新
                myBaseApader.notifyDataSetChanged();
                //计算
                IpresenterImp presenter = new IpresenterImp();
                presenter.jisuan(new ModelImp(), goodsBean,GoodsActivity.this);

            }
        });
    }
    @Override
    public void showSum(double sum) {
        sum1.setText("总价:" + sum);
    }

    @Override
    public GoodsBean goodsBean() {

        return goodsBean;
    }

    @Override
    public void showGoodsDate(Context context, GoodsBean goodsBean, List<GoodsBean.DataBean> data) {
             this.goodsBean=goodsBean;
        Log.e("Tag", data.toString() + "++++++++++++++++++++++++++++++++++");

        myBaseApader = new MyBaseApader(context,this, data);
        elv.setAdapter(myBaseApader);

        int childCount = myBaseApader.getGroupCount();
        for (int i = 0; i < childCount; i++) {
            elv.expandGroup(i);
        }
    }
}

GoodsView.java

package com.example.administrator.day_21.IView;

import android.content.Context;

import com.example.administrator.day_21.JavaBean.GoodsBean;

import java.util.List;

public interface GoodsView {
    void showGoodsDate(Context context, GoodsBean goodsBean, List<GoodsBean.DataBean> data);
}

MainActivity.java

package com.example.administrator.day_21.IView;

import android.content.Context;
import android.content.Intent;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.example.administrator.day_21.IModel.ModelImp;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import com.example.administrator.day_21.JavaBean.XqBean;
import com.example.administrator.day_21.R;
import com.example.administrator.day_21.presenter.IpresenterImp;

public class MainActivity extends AppCompatActivity implements XqView, View.OnClickListener,AddView {

    private ImageView img;
    private TextView title_aa;
    private TextView yuanjia;
    private TextView youhui;
    private Button gouwu;
    private Button jrgwc;
    private  XqBean.DataBean datebean;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        inview();
        IpresenterImp ip = new IpresenterImp();
        ip.showXqdate(this, new ModelImp(), this);
    }

    public void inview() {
        img = (ImageView) findViewById(R.id.img);
        title_aa = (TextView) findViewById(R.id.title_aa);
        yuanjia = (TextView) findViewById(R.id.yuanjia);
        youhui = (TextView) findViewById(R.id.youhui);
        gouwu = (Button) findViewById(R.id.gouwu);
        jrgwc = (Button) findViewById(R.id.jrgwc);

        gouwu.setOnClickListener(this);
        jrgwc.setOnClickListener(this);
    }


    @Override
    public void showdate(Context context, XqBean.DataBean Xpdate) {
        this.datebean=Xpdate;

        Toast.makeText(context, Xpdate.toString() + "", Toast.LENGTH_SHORT).show();
        String images = Xpdate.getImages();
        String[] split = images.split(".jpg");
        String s = split[0] + ".jpg";
        Glide.with(MainActivity.this).load(s).into(img);
        title_aa.setText(Xpdate.getTitle());
        yuanjia.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //中间横线
        yuanjia.setText("原价:" + Xpdate.getPrice() + "");
        youhui.setText("优惠价:" + Xpdate.getBargainPrice() + "");

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.gouwu:
                Toast.makeText(this, "DSADSADA", Toast.LENGTH_SHORT).show();
                startActivity(new Intent(MainActivity.this, GoodsActivity.class));
                finish();
                break;
            case R.id.jrgwc:
                IpresenterImp ipresenterImp=new IpresenterImp();
                ipresenterImp.Addip(new ModelImp(),this);
                break;
        }
    }

    @Override
    public void showDetailData(GoodsBean goodsBean) {

    }

    @Override
    public void jumpToCatActivity() {

    }

    @Override
    public void addToCart() {

    }

    @Override
    public String getPid() {

        return datebean.getPid()+"";
    }

    @Override
    public void showAddSucess() {
        Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void shoAddError() {
        Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();
    }
}

MyBaseApader.java

package com.example.administrator.day_21.IView;

import android.content.Context;
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.bumptech.glide.Glide;
import com.example.administrator.day_21.IModel.ModelImp;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import com.example.administrator.day_21.R;
import com.example.administrator.day_21.presenter.IpresenterImp;

import java.util.List;

public class MyBaseApader extends BaseExpandableListAdapter {

    private final Context context;
    private final List<GoodsBean.DataBean> data;
    private final sumView sumView;


    private double sum = 0;

    public MyBaseApader(Context context, sumView sumView, List<GoodsBean.DataBean> data) {
        this.context = context;
        this.data = data;
        this.sumView = sumView;
    }

    @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 groupPosition;
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return data.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 false;
    }

    @Override
    public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        GroupViewHolde groupViewHolde = null;
        if (convertView == null) {
            groupViewHolde = new GroupViewHolde();
            convertView = View.inflate(context, R.layout.groupview, null);
            groupViewHolde.tv = (TextView) convertView.findViewById(R.id.title_bb);
            groupViewHolde.ck = (CheckBox) convertView.findViewById(R.id.Gcb);

            convertView.setTag(groupViewHolde);

        } else {

            groupViewHolde = (GroupViewHolde) convertView.getTag();

        }
        groupViewHolde.tv.setText(data.get(groupPosition).getSellerName());
        groupViewHolde.ck.setChecked(data.get(groupPosition).getGflas());

        groupViewHolde.ck.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Boolean gflas = data.get(groupPosition).getGflas();
                gflas = !gflas;
                data.get(groupPosition).setGflas(gflas);
                //遍历子元素,全部置为true
                List<GoodsBean.DataBean.ListBean> list = data.get(groupPosition).getList();
                //遍历子元素,全部置为true
                for (int i = 0; i < list.size(); i++) {
                    list.get(i).setChflas(gflas);

                }
                //通知界面
                notifyDataSetChanged();
                IpresenterImp ipresenterImp = new IpresenterImp();
                ipresenterImp.jisuan(new ModelImp(), sumView.goodsBean(), sumView);
            }
        });


        return convertView;
    }

    @Override
    public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        ChildViewHolde childViewHolde = null;
        if (convertView == null) {
            childViewHolde = new ChildViewHolde();
            convertView = View.inflate(context, R.layout.childview, null);
            childViewHolde.ckd = (CheckBox) convertView.findViewById(R.id.Chcb);
            childViewHolde.img = (ImageView) convertView.findViewById(R.id.Cimg);
            childViewHolde.Ctv = (TextView) convertView.findViewById(R.id.Ctv);
            childViewHolde.yuan_tv = (TextView) convertView.findViewById(R.id.Cyj);
            convertView.setTag(childViewHolde);
        } else {
            childViewHolde = (ChildViewHolde) convertView.getTag();
        }
        String images = data.get(groupPosition).getList().get(childPosition).getImages();
        String[] jpgs = images.split("jpg");
        String s = jpgs[0] + "jpg";
        Glide.with(context).load(s).into(childViewHolde.img);
        childViewHolde.ckd.setChecked(data.get(groupPosition).getList().get(childPosition).getChflas());
        childViewHolde.Ctv.setText(data.get(groupPosition).getList().get(childPosition).getTitle());
        childViewHolde.yuan_tv.setText(data.get(groupPosition).getList().get(childPosition).getPrice() + "");
        childViewHolde.ckd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean isCheked = data.get(groupPosition).getList().get(childPosition).getChflas();
                isCheked = !isCheked;
                data.get(groupPosition).getList().get(childPosition).setChflas(isCheked);
                ;
                boolean flag = true;
                for (int i = 0; i < data.get(groupPosition).getList().size(); i++) {
                    if (!data.get(groupPosition).getList().get(i).getChflas()) {
                        flag = false;
                    }
                }
                data.get(groupPosition).setGflas(flag);
                IpresenterImp ipresenterImp = new IpresenterImp();
                ipresenterImp.jisuan(new ModelImp(), sumView.goodsBean(), sumView);
                //通知界面
                notifyDataSetChanged();
            }
        });
        return convertView;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }


    class GroupViewHolde {
        CheckBox ck;
        TextView tv;
    }
    class ChildViewHolde {
        CheckBox ckd;
        ImageView img;
        TextView Ctv;
        TextView yuan_tv;
    }
}

SplashActivity.java

package com.example.administrator.day_21.IView;

import android.animation.Animator;
import android.animation.AnimatorSet;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;

import com.example.administrator.day_21.R;

public class SplashActivity extends Activity {

    private ImageView img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        inView();
    }


    private void inView() {
        img = (ImageView) findViewById(R.id.img);
        AnimatorSet animatorSet = SplashView.setAnimatorSet(SplashActivity.this, img);
        animatorSet.addListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animation) {

            }

            @Override
            public void onAnimationEnd(Animator animation) {
                startActivity(new Intent(SplashActivity.this, MainActivity.class));
                 overridePendingTransition(R.anim.enter, R.anim.out);
                finish();
            }

            @Override
            public void onAnimationCancel(Animator animation) {

            }

            @Override
            public void onAnimationRepeat(Animator animation) {

            }
        });

    }

}

SplashView.java

package com.example.administrator.day_21.IView;

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.View;

/**
 * Created by lenovo on 2018/1/10.
 */

public class SplashView {

    public static AnimatorSet setAnimatorSet(Context context, View view) {
    //获取屏幕一般
        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
        int heightPixels = metrics.heightPixels;

        ObjectAnimator translationY = ObjectAnimator.ofFloat(view, "translationY", 0, heightPixels / 2 - view.getHeight());
        ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", 2.0f, 1.0f);
        ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", 2.0f, 1.0f);
        ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 0, 1.0f);
        ObjectAnimator rotation = ObjectAnimator.ofFloat(view, "rotation", 0, 360);
        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet.playTogether(translationY,scaleX,scaleY,alpha,rotation);
        animatorSet.setDuration(3000);
        animatorSet.start();
        return  animatorSet;

    }
        //获取屏幕一般

}

sumView.java

package com.example.administrator.day_21.IView;

import com.example.administrator.day_21.JavaBean.GoodsBean;

/**
 * Created by lenovo on 2018/1/12.
 */

public interface sumView {
    //显示总价
    void showSum(double sum);
    GoodsBean goodsBean();
}

XqView.java

package com.example.administrator.day_21.IView;

import android.content.Context;

import com.example.administrator.day_21.JavaBean.XqBean;

public interface XqView {
   void showdate(Context context, XqBean.DataBean Xpdate);
}

JavaBean层

GoodsBean.java

package com.example.administrator.day_21.JavaBean;

import java.util.List;

public class GoodsBean {


    private String msg;
    private String code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {

        private boolean Gflas;
        private String sellerName;
        private String sellerid;
        private List<ListBean> list;

        @Override
        public String toString() {
            return "DataBean{" +
                    "Gflas=" + Gflas +
                    ", sellerName='" + sellerName + '\'' +
                    ", sellerid='" + sellerid + '\'' +
                    ", list=" + list +
                    '}';
        }

        public Boolean getGflas() {
            return Gflas;
        }

        public void setGflas(Boolean gflas) {
            Gflas = gflas;
        }

        public DataBean(Boolean gflas, String sellerName, String sellerid, List<ListBean> list) {
            this.Gflas = gflas;
            this.sellerName = sellerName;
            this.sellerid = sellerid;
            this.list = list;
        }

        public String getSellerName() {
            return sellerName;
        }

        public void setSellerName(String sellerName) {
            this.sellerName = sellerName;
        }

        public String getSellerid() {
            return sellerid;
        }

        public void setSellerid(String sellerid) {
            this.sellerid = sellerid;
        }

        public List<ListBean> getList() {
            return list;
        }

        public void setList(List<ListBean> list) {
            this.list = list;
        }

        public static class ListBean {


            private boolean chflas;
            private double bargainPrice;
            private String createtime;
            private String detailUrl;
            private String images;
            private int num;
            private int pid;
            private double price;
            private int pscid;
            private int selected;
            private int sellerid;
            private String subhead;
            private String title;

            @Override
            public String toString() {
                return "ListBean{" +
                        "chflas=" + chflas +
                        ", bargainPrice=" + bargainPrice +
                        ", createtime='" + createtime + '\'' +
                        ", detailUrl='" + detailUrl + '\'' +
                        ", images='" + images + '\'' +
                        ", num=" + num +
                        ", pid=" + pid +
                        ", price=" + price +
                        ", pscid=" + pscid +
                        ", selected=" + selected +
                        ", sellerid=" + sellerid +
                        ", subhead='" + subhead + '\'' +
                        ", title='" + title + '\'' +
                        '}';
            }

            public ListBean() {
            }

            public ListBean(Boolean chflas, double bargainPrice, String createtime, String detailUrl, String images, int num, int pid, double price, int pscid, int selected, int sellerid, String subhead, String title) {
                this.chflas = chflas;
                this.bargainPrice = bargainPrice;
                this.createtime = createtime;
                this.detailUrl = detailUrl;
                this.images = images;
                this.num = num;
                this.pid = pid;
                this.price = price;
                this.pscid = pscid;
                this.selected = selected;
                this.sellerid = sellerid;
                this.subhead = subhead;
                this.title = title;
            }

            public Boolean getChflas() {
                return chflas;
            }

            public void setChflas(Boolean chflas) {
                this.chflas = chflas;
            }

            public double getBargainPrice() {
                return bargainPrice;
            }

            public void setBargainPrice(double bargainPrice) {
                this.bargainPrice = bargainPrice;
            }

            public String getCreatetime() {
                return createtime;
            }

            public void setCreatetime(String createtime) {
                this.createtime = createtime;
            }

            public String getDetailUrl() {
                return detailUrl;
            }

            public void setDetailUrl(String detailUrl) {
                this.detailUrl = detailUrl;
            }

            public String getImages() {
                return images;
            }

            public void setImages(String images) {
                this.images = images;
            }

            public int getNum() {
                return num;
            }

            public void setNum(int num) {
                this.num = num;
            }

            public int getPid() {
                return pid;
            }

            public void setPid(int pid) {
                this.pid = pid;
            }

            public double getPrice() {
                return price;
            }

            public void setPrice(int price) {
                this.price = price;
            }

            public int getPscid() {
                return pscid;
            }

            public void setPscid(int pscid) {
                this.pscid = pscid;
            }

            public int getSelected() {
                return selected;
            }

            public void setSelected(int selected) {
                this.selected = selected;
            }

            public int getSellerid() {
                return sellerid;
            }

            public void setSellerid(int sellerid) {
                this.sellerid = sellerid;
            }

            public String getSubhead() {
                return subhead;
            }

            public void setSubhead(String subhead) {
                this.subhead = subhead;
            }

            public String getTitle() {
                return title;
            }

            public void setTitle(String title) {
                this.title = title;
            }
        }
    }
}

XqBean.java

package com.example.administrator.day_21.JavaBean;

public class XqBean {

    private String msg;
    private SellerBean seller;
    private String code;
    private DataBean data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public SellerBean getSeller() {
        return seller;
    }

    public void setSeller(SellerBean seller) {
        this.seller = seller;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public DataBean getData() {
        return data;
    }

    public void setData(DataBean data) {
        this.data = data;
    }

    public static class SellerBean {


        private String description;
        private String icon;
        private String name;
        private int productNums;
        private int score;
        private int sellerid;

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        public String getIcon() {
            return icon;
        }

        public void setIcon(String icon) {
            this.icon = icon;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getProductNums() {
            return productNums;
        }

        public void setProductNums(int productNums) {
            this.productNums = productNums;
        }

        public int getScore() {
            return score;
        }

        public void setScore(int score) {
            this.score = score;
        }

        public int getSellerid() {
            return sellerid;
        }

        public void setSellerid(int sellerid) {
            this.sellerid = sellerid;
        }
    }

    public static class DataBean {
        private double bargainPrice;
        private String createtime;
        private String detailUrl;
        private String images;
        private int itemtype;
        private int pid;
        private int price;
        private int pscid;
        private int salenum;
        private int sellerid;
        private String subhead;
        private String title;

        public double getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(double bargainPrice) {
            this.bargainPrice = bargainPrice;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public String getDetailUrl() {
            return detailUrl;
        }

        public void setDetailUrl(String detailUrl) {
            this.detailUrl = detailUrl;
        }

        public String getImages() {
            return images;
        }

        public void setImages(String images) {
            this.images = images;
        }

        public int getItemtype() {
            return itemtype;
        }

        public void setItemtype(int itemtype) {
            this.itemtype = itemtype;
        }

        public int getPid() {
            return pid;
        }

        public void setPid(int pid) {
            this.pid = pid;
        }

        public int getPrice() {
            return price;
        }

        public void setPrice(int price) {
            this.price = price;
        }

        public int getPscid() {
            return pscid;
        }

        public void setPscid(int pscid) {
            this.pscid = pscid;
        }

        public int getSalenum() {
            return salenum;
        }

        public void setSalenum(int salenum) {
            this.salenum = salenum;
        }

        public int getSellerid() {
            return sellerid;
        }

        public void setSellerid(int sellerid) {
            this.sellerid = sellerid;
        }

        public String getSubhead() {
            return subhead;
        }

        public void setSubhead(String subhead) {
            this.subhead = subhead;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }
    }
}

OkhttpUils

OkHttpConfing.java

package com.example.administrator.day_21.OkhttpUils;
//1.商品详情接口
//        https://www.zhaoapi.cn/product/getProductDetail
//        请求参数说明:
//        pid       商品id字段   String类型    必传
//        返回字段说明:
//        bargainPrice 优惠价字段 double类型
//        title 商品名称字段 String类型
//        price 原价字段
//        images        图片列表字段  String类型(注意多张图片用|分割,需要分离出图片url,取第一张图片显示即可)
//        2.加入购物车接口
//        https://www.zhaoapi.cn/product/addCart
//        请求参数说明:
//        uid   用户id字段  String类型 必传
//        pid       商品id字段   String类型    必传
//        返回字段说明:
//        {"msg":"加购成功","code":"0"}
//        3.获取购物车列表接口
//        https://www.zhaoapi.cn/product/getCarts
//        请求参数说明:
//        uid   用户id字段  String类型 必传
//        返回字段说明:
//        见返回json串
//        sellerName  商家名称
//        sellerid  商家id

public class OkHttpConfing {
    public  static String Goodsxq_url="https://www.zhaoapi.cn/product/getProductDetail";
    public static String Cart_url="https://www.zhaoapi.cn/product/addCart";
    public static String getCarts_url="https://www.zhaoapi.cn/product/getCarts";

}

OkHttpjiexi.java

package com.example.administrator.day_21.OkhttpUils;

import android.os.Handler;
import android.os.Message;

import com.example.administrator.day_21.IModel.LoadListtener;

import java.io.IOException;
import java.util.Map;
import java.util.Set;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class OkHttpjiexi {

    private static OkHttpjiexi okhttpjiexi = null;
    MyHandler myHandler=new MyHandler();
    private LoadListtener loadListtener;

    //单例
    public static OkHttpjiexi getInstance() {
        if (okhttpjiexi == null) {
            okhttpjiexi = new OkHttpjiexi();
        }
        return okhttpjiexi;
    }

    public void getOkhttp(String url) {
        OkHttpClient okHttpClient = new OkHttpClient();
        Request builder = new Request.Builder().url(url).build();
        Call call = okHttpClient.newCall(builder);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Message message = myHandler.obtainMessage();
                message.what = 0;
                message.obj = e.getMessage();
                myHandler.sendMessage(message);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Message message = myHandler.obtainMessage();
                message.what = 1;
                message.obj = response.body().string();
                myHandler.sendMessage(message);
            }
        });
    }
    public void okPost(String url, Map<String, String> map) {
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new MyInter()).build();
        //创建FormBody
        FormBody.Builder builder = new FormBody.Builder();
        //遍历map
        Set<String> keys = map.keySet();
        for (String key : keys) {
            String value = map.get(key);
            builder.add(key, value+"");
        }
        //build
        FormBody body = builder.build();
        Request request = new Request.Builder().url(url).post(body).build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Message message = myHandler.obtainMessage();
                message.what = 0;
                message.obj = e.getMessage();
                myHandler.sendMessage(message);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Message message = myHandler.obtainMessage();
                message.what = 1;
                message.obj = response.body().string();
                myHandler.sendMessage(message);
            }
        });
    }

    //拦截器
    class MyInter implements Interceptor {
        private static final String TAG = "MyInter";
        @Override
        public Response intercept(Chain chain) throws IOException {
            //获取原来的body
            Request request = chain.request();
            RequestBody body = request.body();
            if (body instanceof FormBody) {
                //遍历原来的所有参数,加到新的Body里面,最后将公共参数加到新的Body
                FormBody.Builder newBuilder = new FormBody.Builder();
                for (int i = 0; i < ((FormBody) body).size(); i++) {
                    String name = ((FormBody) body).name(i);
                    String value = ((FormBody) body).value(i);

                    //放入新的
                    newBuilder.add(name, value);
                }
                //在将公共参数添加进去
                newBuilder.add("source", "android");
                FormBody newBody = newBuilder.build();
                //创建新的请求
                Request newRequest = request.newBuilder().post(newBody).build();
                Response response = chain.proceed(newRequest);
                return response;
            }

            return null;
        }
    }
    //handler
    class MyHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 0:
                    //失败
                    String e = (String) msg.obj;
                    loadListtener.LoadError(e);
                    break;
                case 1:
                    //成功
                    String json = (String) msg.obj;
                    loadListtener.LoadSccuer(json);
                    break;
            }
        }
    }
  public  void setLoadListtener(LoadListtener loadListtener){
      this.loadListtener=loadListtener;

  }
}

presenter层

Ipresenter.java

package com.example.administrator.day_21.presenter;

import android.content.Context;
import com.example.administrator.day_21.IModel.Model;
import com.example.administrator.day_21.IView.AddView;
import com.example.administrator.day_21.IView.GoodsView;
import com.example.administrator.day_21.IView.XqView;
import com.example.administrator.day_21.IView.sumView;
import com.example.administrator.day_21.JavaBean.GoodsBean;

public interface Ipresenter {
    void showXqdate(Context context, Model model, XqView xqView);
    void showGoodsdate(Context context, Model model, GoodsView goodsView);
    void jisuan(Model iModel, GoodsBean goodsbean, sumView iCartView);
    void Addip(Model iModel, AddView Add);

}

IpresenterImp.java

package com.example.administrator.day_21.presenter;

import android.content.Context;
import android.util.Log;
import com.example.administrator.day_21.IModel.AddListener;
import com.example.administrator.day_21.IModel.LoginListener;
import com.example.administrator.day_21.IModel.Model;
import com.example.administrator.day_21.IView.AddView;
import com.example.administrator.day_21.IView.GoodsView;
import com.example.administrator.day_21.IView.XqView;
import com.example.administrator.day_21.IView.sumView;
import com.example.administrator.day_21.JavaBean.GoodsBean;
import com.example.administrator.day_21.JavaBean.XqBean;
import com.example.administrator.day_21.OkhttpUils.OkHttpConfing;
import com.google.gson.Gson;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class IpresenterImp implements Ipresenter{
    @Override
    public void showXqdate(final Context context, Model model, final XqView xqView) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("pid","17");
      model.xqSccusser(OkHttpConfing.Goodsxq_url, map, new LoginListener() {
          @Override
          public void xqloginSccous(String json) {
              Gson g=new Gson();
              XqBean xqBean = g.fromJson(json, XqBean.class);
              XqBean.DataBean data = xqBean.getData();
              xqView.showdate(context,data);
          }
          @Override
          public void xqloginError(String json) {
          }
      });
    }
    @Override
    public void showGoodsdate(final Context context, Model model, final GoodsView goodsView) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("uid","71");
        model.xqSccusser(OkHttpConfing.getCarts_url, map, new LoginListener() {
            @Override
            public void xqloginSccous(String json) {
                Log.e("Tag",json.toString()+"有数据");
                Gson g=new Gson();
                GoodsBean goodsBean = g.fromJson(json, GoodsBean.class);
                List<GoodsBean.DataBean> data = goodsBean.getData();
                goodsView.showGoodsDate(context,goodsBean,data);
            }
            @Override
            public void xqloginError(String json) {
                Log.e("Tag",json+"++++++++++++++++");

            }
        });
    }
    @Override
    public void jisuan(Model iModel, GoodsBean goodsbean, sumView iCartView) {
        double v = iModel.sumV(goodsbean);
        iCartView.showSum(v);
    }


    @Override
    public void Addip(Model iModel, final AddView Add) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("pid", Add.getPid());
        map.put("uid", "71");

        iModel.addToCart(OkHttpConfing.Cart_url, map, new AddListener() {

            @Override
            public void Addsucces(String json) {
                Log.d("TAG", "addSucess() returned: " + json);
                try {
                    JSONObject object = new JSONObject(json);
                    String code = object.getString("code");
                    if (code.equals("0")) {
                        Add.showAddSucess();
                    } else {
                        Add.shoAddError();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }

            @Override
            public void AddError(String json) {
                Add.shoAddError();
            }
        });

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现二级联动的方式有很多,以下是一种常见的做法: 1. 在HTML中定义两个下拉选择框,分别用id属性命名,如下: ```html <label for="province">省份:</label> <select id="province" name="province"> <option value="">请选择</option> <option value="beijing">北京</option> <option value="shanghai">上海</option> <option value="guangdong">广东</option> </select> <label for="city">城市:</label> <select id="city" name="city"> <option value="">请选择</option> </select> ``` 2. 在JavaScript中编写代码,当省份选择框的值发生变化时,根据所选省份动态生成城市选项。 ```javascript var citySelect = document.getElementById("city"); var provinceSelect = document.getElementById("province"); var cities = { beijing: ["朝阳区", "海淀区", "东城区"], shanghai: ["黄浦区", "浦东新区", "长宁区"], guangdong: ["广州市", "深圳市", "珠海市"] }; provinceSelect.addEventListener("change", function() { // 清空城市选项 citySelect.innerHTML = "<option value=\"\">请选择</option>"; // 获取所选省份的值 var province = this.value; // 如果所选省份存在城市选项,则动态生成城市选项 if (cities[province]) { cities[province].forEach(function(city) { var option = document.createElement("option"); option.value = city; option.textContent = city; citySelect.appendChild(option); }); } }); ``` 3. 根据实际需求调整代码,例如: - 如果省份选项和城市选项不是固定的,可以通过Ajax动态获取数据。 - 如果需要将所选省份和城市的值提交到后端,可以在表单提交时获取它们的值,并将其作为表单数据一并提交。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值