Android 购物车——付款1


点击购物车支付按钮


 mBtnAmount.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (data.size() == 0){//也可以价格==null
                    Toast.makeText(getActivity(), "您的购物车中还没有商品,请先去挑选商品吧", Toast.LENGTH_SHORT).show();
                }else {
                    Intent intent = new Intent(getActivity(), CreateOrder.class);
                    
                    SharedPreferences car = getActivity().getSharedPreferences("Car", 0);
                    SharedPreferences.Editor edit = car.edit();
                    //回传  总价
                    Toast.makeText(getActivity(), "totalPrice:" + totalPrice, Toast.LENGTH_SHORT).show();
                    edit.putString("sumPrice",totalPrice+"");
                    edit.commit();
                    startActivity(intent);
                    getActivity().finish();
                }
            }
        });

跳转到新的页面

CreaterOrder


先出示布局文件

RelativeLayout

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

        <TextView
            android:id="@+id/order_totalPrice"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="5"
            android:gravity="center"
            android:text="总价为:"
            android:textSize="25sp" />

        <Button
            android:id="@+id/order_btnSum"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="立即下单" />


    </LinearLayout>

    <Button
        android:text="返回"
        android:id="@+id/order_return"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

avtivity.java

public class CreateOrder extends AppCompatActivity implements View.OnClickListener,ICreateOrderView {
    /**
     * 总价为:
     */
    private TextView mOrderTotalPrice;
    /**
     * 立即下单
     */
    private Button mOrderBtnSum;
    private Button order_return;
    private String sumPrice;
    private IParesenter iParesenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_order);
        iParesenter = new CreateOrderParesenter(this);
        initView();
        SharedPreferences car = getSharedPreferences("Car", 0);
        sumPrice = car.getString("sumPrice", "");
        mOrderTotalPrice.setText("订单总价为:¥:" + sumPrice + "元");
    }


    private void initView() {
        mOrderTotalPrice = (TextView) findViewById(R.id.order_totalPrice);
        mOrderBtnSum = (Button) findViewById(R.id.order_btnSum);
        order_return = findViewById(R.id.order_return);
        mOrderBtnSum.setOnClickListener(this);
        order_return.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.order_btnSum:
                SharedPreferences log = getSharedPreferences("LOG", Activity.MODE_PRIVATE);
                String uid = log.getString("uid", "");
                String token = log.getString("token", "");
                iParesenter.getJson(Constans.CREATEORDER + "?uid=" + uid + "&price=" + sumPrice + "&token=" + token);
                break;
            case R.id.order_return:
                Intent returns = new Intent(this,JD.class);
                startActivity(returns);
                finish();
                break;
        }
    }

    @Override
    public void createSuccess(String result) {
        Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(this,MyDD.class);//提交订单,跳转到订单页面
        startActivity(intent);
        finish();
    }

    @Override
    public void createFailed(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(this,**.class);//返回购物车页面
        startActivity(intent);
        finish();

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        iParesenter.destroy();
    }
}



public interface ICreateOrderView {
    void createSuccess(String result);
    void createFailed(String msg);
}

CreateOrderParesenter

public class CreateOrderParesenter implements IParesenter {

    private IMoudle iMoudle;
    private ICreateOrderView iCreateOrderView;

    public CreateOrderParesenter(ICreateOrderView iCreateOrderView) {
        this.iCreateOrderView = iCreateOrderView;
        iMoudle = new OkMoudle();
    }

    @Override
    public void getJson(String path) {
        iMoudle.getJson(path, this);
    }

    @Override
    public void getJsonSuccess(String result) {
        Gson gson = new Gson();
        UpUser upUser = gson.fromJson(result, UpUser.class);
        if (upUser.getCode().equals("0")) {
            iCreateOrderView.createSuccess(upUser.getMsg());
        } else {
            iCreateOrderView.createFailed(upUser.getMsg());
        }
    }

    @Override
    public void getJsonFailed(String msg) {
        iCreateOrderView.createFailed("连接服务器失败");

    }

    @Override
    public void destroy() {
        if (iCreateOrderView != null) {
            iCreateOrderView = null;
        }
    }

}


public class UpUser {
    /**
     * msg : 昵称修改成功
     * code : 0
     */
    private String msg;
    private String code;

    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 interface ICreateOrderView {
    void createSuccess(String result);
    void createFailed(String msg);
}

public interface IMoudle {
    void getJson(String path, IParesenter iParesenter);
}

public class OkMoudle implements IMoudle,OnFinishListener {

    private IParesenter iParesenter;

    @Override
    public void getJson(String path, IParesenter iParesenter) {
        this.iParesenter = iParesenter;
        OkUntil okUntil = OkUntil.getInstance();//通过单例模式获取一个OK请求对象
        okUntil.doGet(path,this);//通过get方法获取请求数据
    }

    @Override
    public void onFailed(String msg) {
        iParesenter.getJsonFailed(msg);
    }

    @Override
    public void onSuccess(String result) {
        iParesenter.getJsonSuccess(result);
    }
}

 
public interface OnFinishListener {
    void onFailed(String msg);
    void onSuccess(String result);
}

public interface IParesenter {
    void getJson(String path);
    void getJsonSuccess(String result);
    void getJsonFailed(String msg);
    void destroy();
}



public class OkUntil {
    private static OkUntil okUntil = null;
    private Handler handler = new Handler();
    private OkUntil() {
    }

    /**
     * 得到OkHttpUtils实例对象
     * @return
     */
    public static OkUntil getInstance(){

        if(null == okUntil){

            synchronized (OkUntil.class){

                if(null == okUntil){
                    okUntil = new OkUntil();
                }
            }

        }
        return okUntil;

    }


    /**
     * Get请求
     * @param path
     * @param onFinishListener
     */
    public void doGet(String path, final OnFinishListener onFinishListener){

        //Http:/www.baidu.com?key=ddd&

        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(new CommonParamsInterceptor())
                .build();

        //构建请求项
        Request request = new Request.Builder()
                .get()
                .url(path)
                .build();
        Call call = okHttpClient.newCall(request);
        //execute 子线程  enqueue //
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                //请求失败
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onFinishListener.onFailed(e.getMessage());

                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                //得到服务器的响应结果
                final String result = response.body().string();

                //请求成功
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        //主线程当中执行

                        onFinishListener.onSuccess(result);

                    }
                });

            }
        });

    }
}


public class CommonParamsInterceptor implements Interceptor {

    @Override
    public Response intercept(Chain chain) throws IOException {
        //得到原始的请求对象
        Request request = chain.request();
        //得到用户所使用的请求方式
        String method = request.method();

        if("GET".equals(method)){
            //url
            //原始的请求接口
            String oldUrl = request.url().toString();

            //拼接成一个新的URL
            String newUrl = oldUrl + "&source=android";

            //重新构建请求体
            request = new Request.Builder()
                    .url(newUrl)
                    .build();
        }else if("POST".equals(method)){
            //得到原始的url
            String oldUrl = request.url().toString();
            //得到原有的请求参数
            FormBody oldBody = (FormBody) request.body();//1 2 3

            //新的构建项
            FormBody.Builder builder = new FormBody.Builder();
            for (int i =0 ; i < oldBody.size(); ++i){
                //取出相关请求参数(原有的)
                String name = oldBody.name(i);
                String value = oldBody.value(i);
                //将原始的参数拼装到新的构建体当中
                builder.add(name,value);
            }

            //拼装我们的公共参数
            builder.add("source","android");

            request = new Request.Builder()
                    .url(oldUrl)
                    .post(builder.build())
                    .build();


        }
        //重新发送请求
        return chain.proceed(request);
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值