您的位置:首页 > 编程语言

登录注册到展示数据到购物车代码

2018-01-06 10:47 513 查看








MainActivity

package com.example.wanggang001;

import android.content.Intent;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

import com.example.wanggang001.bean.LoginBean;

import com.example.wanggang001.presenter.MyLoginpresenter;

import com.example.wanggang001.view.MyLoginview;

import java.security.MessageDigest;

/**

 * 13301070105

 * 13301070105

 *

 * @Data 2017/12/21

 * @Author WangGang

 * @ 此类/方法的作用

 */

public class MainActivity extends AppCompatActivity implements MyLoginview, View.OnClickListener {

    private EditText et_phone;

    private EditText et_pwd;

    private Button btn_login;

    private MyLoginpresenter myLoginpresenter;

    private TextView textView;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //找我们的布局控件

        et_phone = (EditText) findViewById(R.id.et_phone);

        et_pwd = (EditText) findViewById(R.id.et_pwd);

        btn_login = (Button) findViewById(R.id.btn_login);

        textView = (TextView) findViewById(R.id.text_zhuce);

        textView.setOnClickListener(this);

        btn_login.setOnClickListener(this);

        //创建对象

        myLoginpresenter = new MyLoginpresenter(this, this);

    }

    @Override

    public void onClick(View v) {

        switch (v.getId()) {

            case R.id.btn_login://判断

                if (et_phone.getText().toString().equals("13301070105") && et_pwd.getText().toString().equals("123456")) {

                    myLoginpresenter.jsondata(et_phone.getText().toString(), et_pwd.getText().toString());

                } else {

                    Toast.makeText(this, "手机号或密码不能为空,请重新输入。。。", Toast.LENGTH_SHORT).show();

                }

                break;

            case R.id.text_zhuce://跳到注册页面去

                startActivity(new Intent(MainActivity.this, ZhuceActivity.class));

                finish();

                break;

            default:

                break;

        }

    }

    @Override

    public void showview(LoginBean loginBean) {

        Toast.makeText(this, loginBean.getMsg(), Toast.LENGTH_SHORT).show();

        if (loginBean.getMsg().equals("登录成功")) {

            //跳到商品的页面去

            startActivity(new Intent(MainActivity.this, ShopActivity.class));

            finish();

        }

    }

    //解绑的操作

    @Override

    protected void onDestroy() {

        super.onDestroy();

        myLoginpresenter.death();

    }

     //md5的加密

    public static String MD5(String str) {

        MessageDigest md5 = null;

        try {

            md5 = MessageDigest.getInstance("MD5");

        } catch (Exception e) {

            e.printStackTrace();

        }

         //将字符串转换成字符串数组

        char[] pswdArray = str.toCharArray();

        byte[] pswdByte = new byte[pswdArray.length];

         //将字符转换成字节

        for (int i = 0; i < pswdArray.length; i++) {

            pswdByte[i] = (byte) pswdArray[i];

        }

        byte[] digest = md5.digest(pswdByte);

         //将得到的字节数组转换成十六进制数

        StringBuffer buff = new StringBuffer();

        for (int i = 0; i < digest.length; i++) {

            int num = ((int) digest[i]);

            //如果不足16,加0填充

            if (num < 16)

                buff.append("0");

            buff.append(Integer.toHexString(num));

        }

        return buff.toString();

    }

    //用SharedPreferences将得到的十六进制存在本地中

    public void savePSWD(String pswd) {

        String md5pswd = MD5(pswd);

        SharedPreferences.Editor editor = getSharedPreferences("pswdword", MODE_PRIVATE).edit();

        editor.putString("pswd", md5pswd);

        editor.commit();

    }

}

ZhuceActivity

package com.example.wanggang001;

import android.content.Intent;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

import com.example.wanggang001.bean.ZhuceBean;

import com.example.wanggang001.presenter.MyZhucepresenter;

import com.example.wanggang001.view.MyZzhuceview;

import java.security.MessageDigest;

/**

 * @Data 2017/12/21

 * @Author WangGang

 * @ 此类/方法的作用

 */

public class ZhuceActivity extends AppCompatActivity implements MyZzhuceview, View.OnClickListener {

    private EditText et_phone02;

    private EditText et_pwd02;

    private Button btn_zhuce;

    private MyZhucepresenter myZhucepresenter;

    private TextView textView;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_zhuce);

        //找我们的布局控件

        textView = (TextView) findViewById(R.id.text_tuichu);

        et_phone02 = (EditText) findViewById(R.id.et_phone02);

        //找我们的布局控件

        et_pwd02 = (EditText) findViewById(R.id.et_pwd02);

        btn_zhuce = (Button) findViewById(R.id.btn_zhuce);

        btn_zhuce.setOnClickListener(this);

        textView.setOnClickListener(this);

        //输入框的值

        myZhucepresenter = new MyZhucepresenter(this, this);

    }

    @Override

    public void showviewzhuce(ZhuceBean zhuceBean) {

        Toast.makeText(this, zhuceBean.getMsg(), Toast.LENGTH_SHORT).show();

    }

    @Override

    public void onClick(View v) {

        switch (v.getId()) {

            case R.id.btn_zhuce:

                if (et_phone02.getText().toString() != null && et_pwd02.getText().toString() != null) {

                    myZhucepresenter.jsondata(et_phone02.getText().toString(), et_pwd02.getText().toString());

                } else {

                    Toast.makeText(this, "手机号或密码不能为空,请重新输入。。。", Toast.LENGTH_SHORT).show();

                }

                break;

            case R.id.text_tuichu:

                //跳到登录页面

                startActivity(new Intent(ZhuceActivity.this, MainActivity.class));

                finish();

                break;

            default:

                break;

        }

    }

    //解绑的操作

    @Override

    protected void onDestroy() {

        super.onDestroy();

        myZhucepresenter.death();;

    }

    //md5的加密

    public static String MD5(String str) {

        MessageDigest md5 = null;

        try {

            md5 = MessageDigest.getInstance("MD5");

        } catch (Exception e) {

            e.printStackTrace();

        }

        //将字符串转换成字符串数组

        char[] pswdArray = str.toCharArray();

        byte[] pswdByte = new byte[pswdArray.length];

        //将字符转换成字节

        for (int i = 0; i < pswdArray.length; i++) {

            pswdByte[i] = (byte) pswdArray[i];

        }

        byte[] digest = md5.digest(pswdByte);

        //将得到的字节数组转换成十六进制数

        StringBuffer buff = new StringBuffer();

        for (int i = 0; i < digest.length; i++) {

            int num = ((int) digest[i]);

            //如果不足16,加0填充

            if (num < 16)

                buff.append("0");

            buff.append(Integer.toHexString(num));

        }

        return buff.toString();

    }

    //用SharedPreferences将得到的十六进制存在本地中

    public void savePSWD(String pswd) {

        String md5pswd = MD5(pswd);

        SharedPreferences.Editor editor = getSharedPreferences("pswdword", MODE_PRIVATE).edit();

        editor.putString("pswd", md5pswd);

        editor.commit();

    }

}

ShopActivity

package com.example.wanggang001;

import android.content.Intent;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.LinearLayoutManager;

import android.view.View;

import com.example.wanggang001.bean.ShopBean;

import com.example.wanggang001.shopadater.ShopAdater;

import com.example.wanggang001.shopadater.ShopView;

import com.example.wanggang001.shopadater.Shoppresnter;

import com.jcodecraeer.xrecyclerview.XRecyclerView;

/**

 *

 *

 *

 *

 * @Data 2017/12/21

 * @Author WangGang

 * @ 此类/方法的作用

 */

public class ShopActivity extends AppCompatActivity implements ShopView{

    private XRecyclerView xrecyclerview_01;

    private Shoppresnter shoppresnter;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_shop);

        //找我们的布局控件

        xrecyclerview_01 = (XRecyclerView) findViewById(R.id.xrecyclerview_01);

        shoppresnter = new Shoppresnter(this,this);

        shoppresnter.jsondata();

    }

    @Override

    public void showshopview(ShopBean shopBean) {

        //设置适配器

       ShopAdater shopAdater = new ShopAdater(ShopActivity.this, shopBean);

        xrecyclerview_01.setAdapter(shopAdater);

        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);

        xrecyclerview_01.setLayoutManager(linearLayoutManager);

        xrecyclerview_01.setPullRefreshEnabled(false);

        //接口回调监听事件

        shopAdater.setclick(new ShopAdater.Clicklistener() {

            @Override

            public void dianjiclick(View view, int position, String pid, String text_title, String text_price, String image) {

                //传值

                Intent intent = new Intent(ShopActivity.this, AddActivity.class);

                intent.putExtra("text_title", text_title);

                intent.putExtra("text_price", text_price);

                intent.putExtra("pid", pid);

                intent.putExtra("image", image);

                startActivity(intent);

            }

        });

    }

    //销毁

    @Override

    protected void onDestroy() {

        super.onDestroy();

        shoppresnter.death();

    }

}

AddActivity

package com.example.wanggang001;

import android.content.Intent;

import android.media.MediaPlayer;

import android.net.Uri;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.MediaController;

import android.widget.TextView;

import android.widget.Toast;

import android.widget.VideoView;

import com.bumptech.glide.Glide;

import com.example.wanggang001.addadater.Addpresenter;

import com.example.wanggang001.addadater.Addview;

import com.example.wanggang001.bean.AddBean;

/**

 * @Data 2017/12/21

 * @Author WangGang

 * @ 此类/方法的作用

 */

public class AddActivity extends AppCompatActivity implements Addview, View.OnClickListener {

    private ImageView image_add_view;

    private TextView text_add_title;

    private TextView text_add_price;

    private String pid;

    private Button btn_add;

    private Button btn_buy;

    pr
16e63
ivate Addpresenter addpresenter;

    private VideoView videoView;

    //是使用handler发送延迟的消息

    private Handler handler = new Handler() {

        @Override

        public void handleMessage(Message msg) {

            super.handleMessage(msg);

            if (msg.what == 0) {

                Toast.makeText(AddActivity.this, "正在缓冲中。。。。", Toast.LENGTH_SHORT).show();

            }

        }

    };

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_add);

        //找我们的布局控件

        image_add_view = (ImageView) findViewById(R.id.image_add_view);

        text_add_title = (TextView) findViewById(R.id.text_add_title);

        //找我们的布局控件

        text_add_price = (TextView) findViewById(R.id.text_add_price);

        btn_add = (Button) findViewById(R.id.btn_add);

        //找我们的布局控件

        btn_add.setOnClickListener(this);

        btn_buy = (Button) findViewById(R.id.btn_buy);

        btn_buy.setOnClickListener(this);

        //接收数据

        Intent intent = getIntent();

        String name = intent.getStringExtra("text_title");

        String price = intent.getStringExtra("text_price");

        pid = intent.getStringExtra("pid");

        String image = intent.getStringExtra("image");

        //设置数据

        text_add_title.setText(name);

        text_add_price.setText("$:" + price);

        //设置图片

        Glide.with(AddActivity.this).load(image).into(image_add_view);

//----------播放视频-----------------------------------------------------------

        //控件

        videoView = (VideoView) this.findViewById(R.id.videoView);

        String videoUrl2 = Utils.videoUrl;

        //转换

        Uri uri = Uri.parse(videoUrl2);

        //设置视频控制器

        videoView.setMediaController(new MediaController(this));

        //播放完成回调

        videoView.setOnCompletionListener(new MyPlayerOnCompletionListener());

        //设置视频路径

        videoView.setVideoURI(uri);

        if (videoView != null) {

            handler.sendEmptyMessageDelayed(0, 2000);

            // Toast.makeText(AddActivity.this, "正在缓冲中。。。。", Toast.LENGTH_SHORT).show();

        }

        //开始播放视频

        videoView.start();

    }

    class MyPlayerOnCompletionListener implements MediaPlayer.OnCompletionListener {

        @Override

        public void onCompletion(MediaPlayer mp) {

            Toast.makeText(AddActivity.this, "播放完成了", Toast.LENGTH_SHORT).show();

        }

    }

    @Override

    public void showaddview(AddBean addBean) {

        //跳转购物车页面

        Toast.makeText(this, addBean.getMsg(), Toast.LENGTH_SHORT).show();

        if (addBean.getMsg().equals("加购成功")) {

            startActivity(new Intent(AddActivity.this, CartShopActivity.class));

        }

    }

    @Override

    public void onClick(View view) {//点击事件

        switch (view.getId()) {

            case R.id.btn_add:

                //点击加入购物车

                addpresenter = new Addpresenter(this, this);

                addpresenter.jsondata(pid);

                break;

            case R.id.btn_buy:

                Toast.makeText(this, "购买成功", Toast.LENGTH_SHORT).show();

                break;

            default:

                break;

        }

    }

    //视频的网址

    public class Utils {

        public static final String videoUrl = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4";

    }

    //解绑的操作

    @Override

    protected void onDestroy() {

        super.onDestroy();

        addpresenter.death();

    }

}

CartShopActivity

package com.example.wanggang001;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.LinearLayoutManager;

import android.support.v7.widget.RecyclerView;

import android.view.View;

import android.widget.CheckBox;

import android.widget.TextView;

import android.widget.Toast;

import com.example.wanggang001.bean.CartBean;

import com.example.wanggang001.cartadater.MyPresenter;

import com.example.wanggang001.cartadater.RecyAdapter;

import com.example.wanggang001.cartadater.ViewCallBack;

/**

 * @Data 2017/12/21

 * @Author WangGang

 * @ 此类/方法的作用

 */

public class CartShopActivity extends AppCompatActivity implements ViewCallBack {

    private RecyclerView recyclerView;

    private TextView total_price;

    private TextView total_num;

    private CheckBox quanxuan;

    private MyPresenter myPresenter;

    private RecyAdapter recyAdapter;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_cart_shop);

        //找我们的布局控件

        recyclerView = (RecyclerView) findViewById(R.id.recycler_View);

        total_price = (TextView) findViewById(R.id.total_price);

        total_num = (TextView) findViewById(R.id.total_num);

        quanxuan = (CheckBox) findViewById(R.id.quanxuan);

        quanxuan.setTag(1);

        LinearLayoutManager manager = new LinearLayoutManager(CartShopActivity.this);

        //适配器

        recyAdapter = new RecyAdapter(this);

        myPresenter = new MyPresenter(this);

        myPresenter.getData();

        recyclerView.setLayoutManager(manager);

        recyclerView.setAdapter(recyAdapter);

        //调用recyAdapter里面的接口,设置 全选按钮 总价 总数量

        recyAdapter.setUpdateListener(new RecyAdapter.UpdateListener() {

            @Override

            public void setTotal(String total, String num, boolean allCheck) {

                total_num.setText("共" + num + "件商品");//总数量

                total_price.setText("合计 :¥" + total );//总价

                if (allCheck) {

                    quanxuan.setTag(2);

                    quanxuan.setBackgroundResource(R.drawable.shopcart_selected);

                } else {

                    quanxuan.setTag(1);

                    quanxuan.setBackgroundResource(R.drawable.shopcart_unselected);

                }

                quanxuan.setChecked(allCheck);

            }

        });

        //这里只做ui更改, 点击全选按钮,,调到adapter里面操作

        quanxuan.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                //调用adapter里面的方法 ,,把当前quanxuan状态传递过去

                int tag = (int) quanxuan.getTag();

                if (tag == 1) {

                    quanxuan.setTag(2);

                    quanxuan.setBackgroundResource(R.drawable.shopcart_selected);

                } else {

                    quanxuan.setTag(1);

                    quanxuan.setBackgroundResource(R.drawable.shopcart_unselected);

                }

                recyAdapter.quanXuan(quanxuan.isChecked());

            }

        });

    }

    //实现接口,重写的方法

    @Override

    public void success(CartBean cartBean) {

        //拿到返回来的数据 ,, 传给适配器数据

        recyAdapter.add(cartBean);

    }

    @Override

    public void failure(final Exception e) {

        runOnUiThread(new Runnable() {

            @Override

            public void run() {

                Toast.makeText(CartShopActivity.this, "error", Toast.LENGTH_SHORT).show();

            }

        });

    }

    //解绑的操作

    @Override

    protected void onDestroy() {

        super.onDestroy();

        myPresenter.detach();

    }

}

Applition

package com.example.wanggang001;

import android.app.Application;

import com.facebook.drawee.backends.pipeline.Fresco;

/**

 * @Data 2017/12/1

 * @Author WangGang

 * @ 此类/方法的作用

 */

public class Applition extends Application {

    @Override

    public void onCreate() {

        super.onCreate();

        //初始化

        Fresco.initialize(this);

    }

}

AddMmodel

public class AddMmodel implements  Addmodel {

    @Override

    public void getadddata(String pid, Callback callback) {

        OkHttp3Utils.doGet("https://www.zhaoapi.cn/product/addCart?pid="+pid+"&uid=3831&token=DED1DEF0B7287F1575BD92B817A6C742&source=android",callback);

    }

}

Addmodel

public interface Addmodel {

    public void getadddata(String pid, Callback callback);

}

Addpresenter

public class Addpresenter {

    Context context;

    Addview addview;

    AddMmodel addMmodel;

    public Addpresenter(Context context, Addview addview) {

        this.context = context;

        this.addview = addview;

        addMmodel = new AddMmodel();

    }

    public void jsondata(String pid) {

        addMmodel.getadddata(pid,new OnUiCallback() {

            @Override

            public void onFailed(Call call, IOException e) {

            }

            @Override

            public void onSuccess(String result) {

                Gson gson = new Gson();

                AddBean addBean = gson.fromJson(result, AddBean.class);

                addview.showaddview(addBean);

            }

        });

    }

    //解绑的操作

    public  void  death(){

      addview=null;

    }

}

Addview

public interface Addview {

    public void showaddview(AddBean addBean);

}

LloginMmodel

public class LloginMmodel implements Lloginmodel {

    @Override

    public void getdata(String phone, String pwd, Callback callback) {

        OkHttp3Utils.doGet("https://www.zhaoapi.cn/user/login?mobile="+phone+"&password="+pwd+"",callback);

    }

}

Lloginmodel

public interface Lloginmodel {

    public  void  getdata(String phone,String pwd,Callback callback);

}

ZhuceLmodel

public interface ZhuceLmodel {

    public  void  getdatazhuce(String phone, String pwd, Callback callback);

}

ZhuceMmodel

public class ZhuceMmodel implements ZhuceLmodel {

    @Override

    public void getdatazhuce(String phone, String pwd, Callback callback) {

        OkHttp3Utils.doGet("https://www.zhaoapi.cn/user/reg?mobile="+phone+"&password="+pwd+"",callback);

    }

}

MyLoginview

public interface MyLoginview {

    public  void showview(LoginBean loginBean);

}

MyZzhuceview

public interface MyZzhuceview {

    public  void showviewzhuce(ZhuceBean zhuceBean);

}

MyLoginpresenter

public class MyLoginpresenter {

    Context context;

    MyLoginview myLoginview;

    LloginMmodel lloginMmodel;

    public MyLoginpresenter(Context context, MyLoginview myLoginview) {

        this.context = context;

        this.myLoginview = myLoginview;

        lloginMmodel = new LloginMmodel();

    }

    public void jsondata(String phone, String pwd) {

        lloginMmodel.getdata(phone, pwd, new OnUiCallback() {

            @Override

            public void onFailed(Call call, IOException e) {

            }

            @Override

            public void onSuccess(String result) {

                Gson gson = new Gson();

                LoginBean loginBean = gson.fromJson(result, LoginBean.class);

                myLoginview.showview(loginBean);

            }

        });

    }

    //解绑的操作

    public  void  death(){

        myLoginview=null;

    }

}

MyZhucepresenter

public class MyZhucepresenter {

    Context context;

    MyZzhuceview myZzhuceview;

    ZhuceMmodel zhuceMmodel;

    public MyZhucepresenter(Context context, MyZzhuceview myZzhuceview) {

        this.context = context;

        this.myZzhuceview = myZzhuceview;

        zhuceMmodel = new ZhuceMmodel();

    }

    public void jsondata(String phone, String pwd) {

        zhuceMmodel.getdatazhuce(phone, pwd, new OnUiCallback() {

            @Override

            public void onFailed(Call call, IOException e) {

            }

            @Override

            public void onSuccess(String result) {

                Gson gson = new Gson();

                ZhuceBean zhuceBean = gson.fromJson(result, ZhuceBean.class);

                myZzhuceview.showviewzhuce(zhuceBean);

            }

        });

    }

    //解绑的操作

    public  void  death(){

        myZzhuceview=null;

    }

}

ShopAdater

public class ShopAdater extends RecyclerView.Adapter<ShopAdater.viewholder> {

    Context context;

    ShopBean shopBean;

    public ShopAdater(Context context, ShopBean shopBean) {

        this.context = context;

        this.shopBean = shopBean;

        ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));

    }

    @Override

    public viewholder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = View.inflate(context, R.layout.shop_layout_01, null);

        return new viewholder(view);

    }

    @Override

    public void onBindViewHolder(viewholder holder, final int position) {

        final String[] image = shopBean.getData().get(position).getImages().split("\\|");

        ImageLoader.getInstance().displayImage(image[0], holder.image_01);

        holder.text_price.setText("¥:"+shopBean.getData().get(position).getPrice());

        holder.text_title.setText(shopBean.getData().get(position).getSubhead());

        //获取pid

        final String pid= shopBean.getData().get(position).getPid()+"";

        final String text_title=shopBean.getData().get(position).getSalenum()+"";

        final String text_price=shopBean.getData().get(position).getSubhead();

        //点击事件回调

        holder.image_01.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                clicklistener.dianjiclick(view,position,pid,text_price,text_title,image[0]);

            }

        });

    }

    @Override

    public int getItemCount() {

        return shopBean.getData() == null ? 0 : shopBean.getData().size();

    }

    class viewholder extends RecyclerView.ViewHolder {

        private ImageView image_01;

        private TextView text_title;

        private TextView text_price;

        public viewholder(View itemView) {

            super(itemView);

            image_01 = (ImageView) itemView.findViewById(R.id.image_01);

            text_title = (TextView) itemView.findViewById(R.id.text_title);

            text_price = (TextView) itemView.findViewById(R.id.text_price);

        }

    }

    Clicklistener clicklistener;

    public void setclick(Clicklistener clicklistener) {

        this.clicklistener = clicklistener;

    }

    public interface Clicklistener {

        public void dianjiclick(View view,int position,String pid,String text_title,String text_price,String image);

    }

}

ShopMmodel

public class ShopMmodel implements Shopmodel {

    @Override

    public void getshopdta(Callback callback) {

        OkHttp3Utils.doGet("http://120.27.23.105/product/searchProducts?keywords=%E6%89%8B%E6%9C%BA&page=1&source=android",callback);

    }

}

Shopmodel

public interface Shopmodel {

    public void getshopdta(Callback callback);

}

Shoppresnter

public class Shoppresnter {

    Context context;

    ShopView shopView;

    ShopMmodel shopMmodel;

    public Shoppresnter(Context context, ShopView shopView) {

        this.context = context;

        this.shopView = shopView;

        shopMmodel = new ShopMmodel();

    }

    public void jsondata() {

        shopMmodel.getshopdta(new OnUiCallback() {

            @Override

            public void onFailed(Call call, IOException e) {

            }

            @Override

            public void onSuccess(String result) {

                Gson gson = new Gson();

                ShopBean shopBean = gson.fromJson(result, ShopBean.class);

                shopView.showshopview(shopBean);

            }

        });

    }

    //解绑的操作

    public  void  death(){

        shopView=null;

    }

}

ShopView

public interface ShopView {

    public void  showshopview(ShopBean shopBean);

}

ModelCallBack

public interface ModelCallBack {

    public void success(CartBean cartBean);

    public void failure(Exception e);

}

MyModel

public class MyModel {

    public void getData(final ModelCallBack modelCallBack){

        String path = "https://www.zhaoapi.cn/product/getCarts?uid=3831&token=DED1DEF0B7287F1575BD92B817A6C742&source=android";

        OkhttpUtils.getInstance().asy(null, path, new AbstractUiCallBack<CartBean>() {

            @Override

            public void success(CartBean cartBean) {

                modelCallBack.success(cartBean);

            }

            @Override

            public void fail(Exception e) {

                modelCallBack.failure(e);

            }

        });

}

}

MyPresenter

public class MyPresenter {

    MyModel myModel = new MyModel();

    ViewCallBack viewCallBack;

    public MyPresenter(ViewCallBack viewCallBack) {

        this.viewCallBack = viewCallBack;

    }

    public void getData() {

        myModel.getData(new ModelCallBack() {

            @Override

            public void success(CartBean cartBean) {

                if (viewCallBack != null) {

                    viewCallBack.success(cartBean);

                }

            }

            @Override

            public void failure(Exception e) {

                if (viewCallBack != null) {

                    viewCallBack.failure(e);

                }

            }

        });

    }

    /**

     * 防止内存泄露

     */

    public void detach() {

        viewCallBack = null;

    }

}

RecyAdapter

public class RecyAdapter extends RecyclerView.Adapter<RecyAdapter.MyViewHolder> {

    Context context;

    private List<CartBean.DataBean.ListBean> list;

    private Map<String, String> map = new HashMap<>();

    public RecyAdapter(Context context) {

        this.context = context;

        ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));

    }

    /**

     * 添加数据

     */

    public void add(CartBean cartBean) {

        if (list == null) {

            list = new ArrayList<>();

        }

        for (CartBean.DataBean shop : cartBean.getData()) {

            map.put(shop.getSellerid(), shop.getSellerName());

            for (int i = 0; i < shop.getList().size(); i++) {

                //添加到list集合里

                list.add(shop.getList().get(i));

            }

        }

        setFirst(list);

        notifyDataSetChanged();

    }

    /**

     * 设置数据源

     */

    private void setFirst(List<CartBean.DataBean.ListBean> list) {

        if (list.size() > 0) {

            list.get(0).setIsFirst(1);

            for (int i = 1; i < list.size(); i++) {

                if (list.get(i).getSellerid() == list.get(i - 1).getSellerid()) {

                    list.get(i).setIsFirst(2);

                } else {

                    list.get(i).setIsFirst(1);

                    if (list.get(i).isItem_check() == true) {

                        list.get(i).setShop_check(list.get(i).isItem_check());

                    }

                }

            }

        }

    }

    @Override

    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = View.inflate(context, R.layout.recy_cart_item, null);

        MyViewHolder myViewHolder = new MyViewHolder(view);

        return myViewHolder;

    }

    @Override

    public void onBindViewHolder(final MyViewHolder holder, final int position) {

        /**

         * 设置商铺显示或隐藏

         * */

        if (list.get(position).getIsFirst() == 1) {

            holder.shop_checkbox.setVisibility(View.VISIBLE);

            holder.shop_name.setVisibility(View.VISIBLE);

            holder.shop_checkbox.setChecked(list.get(position).isShop_check());

            holder.shop_name.setText(map.get(String.valueOf(list.get(position).getSellerid())));

        } else {

            holder.shop_name.setVisibility(View.GONE);

            holder.shop_checkbox.setVisibility(View.GONE);

        }

        String[] split = list.get(position).getImages().split("\\|");

        ImageLoader.getInstance().displayImage(split[0], holder.item_face);

        holder.item_checkbox.setChecked(list.get(position).isItem_check());

        holder.item_name.setText(list.get(position).getTitle());

        holder.item_price.setText(list.get(position).getPrice() + "");

        //调用customjiajian里面的方法设置 加减号中间的数字

        holder.customJiaJian.setEditText(list.get(position).getNum());

        //商铺的shop_checkbox点击事件 ,控制商品的item_checkbox

        holder.shop_checkbox.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                list.get(position).setShop_check(holder.shop_checkbox.isChecked());

                for (int i = 0; i < list.size(); i++) {

                    if (list.get(position).getSellerid() == list.get(i).getSellerid()) {

                        //当前条目的选中状态 设置成 当前商铺的选中状态

                        list.get(i).setItem_check(holder.shop_checkbox.isChecked());

                    }

                }

                notifyDataSetChanged();

                sum(list);

            }

        });

        holder.item_checkbox.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                list.get(position).setItem_check(holder.item_checkbox.isChecked());

                for (int i = 0; i < list.size(); i++) {

                    for (int j = 0; j < list.size(); j++) {

                        if (list.get(i).getSellerid() == list.get(j).getSellerid() && !list.get(j).isItem_check()) {

                            list.get(i).setShop_check(false);

                            break;

                        } else {

                            list.get(i).setShop_check(true);

                        }

                    }

                }

                notifyDataSetChanged();

                sum(list);

            }

        });

        holder.item_delete.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                list.remove(position);

                setFirst(list);

                sum(list);

                notifyDataSetChanged();

            }

        });

        holder.customJiaJian.setCustomListener(new CustomJiaJian.CustomListener() {

            @Override

            public void jiajian(int count) {

                list.get(position).setNum(count);

                notifyDataSetChanged();

                sum(list);

            }

            @Override

            //输入值 求总价

            public void shuRuZhi(int count) {

                list.get(position).setNum(count);

                notifyDataSetChanged();

                sum(list);

            }

        });

    }

    /**

     * 计算总价的方法

     */

    private void sum(List<CartBean.DataBean.ListBean> list) {

        int totalNum = 0;

        float totalMoney = 0.0f;

        boolean allCheck = true;

        for (int i = 0; i < list.size(); i++) {

            if (list.get(i).isItem_check()) {

                totalNum += list.get(i).getNum();

                totalMoney += list.get(i).getNum() * list.get(i).getPrice();

            } else {

                allCheck = false;

            }

        }

        updateListener.setTotal(totalMoney + "", totalNum + "", allCheck);

    }

    public void quanXuan(boolean checked) {

        for (int i = 0; i < list.size(); i++) {

            list.get(i).setShop_check(checked);

            list.get(i).setItem_check(checked);

        }

        notifyDataSetChanged();

        sum(list);

    }

    @Override

    public int getItemCount() {

        return list == null ? 0 : list.size();

    }

    public static class MyViewHolder extends RecyclerView.ViewHolder {

        private final CheckBox shop_checkbox;

        private final TextView shop_name;

        private final CheckBox item_checkbox;

        private final TextView item_name;

        private final TextView item_price;

        private final CustomJiaJian customJiaJian;

        private final ImageView item_delete;

        private final ImageView item_face;

        public MyViewHolder(View itemView) {

            super(itemView);

            shop_checkbox = (CheckBox) itemView.findViewById(R.id.shop_checkbox);

            shop_name = (TextView) itemView.findViewById(R.id.shop_name);

            item_checkbox = (CheckBox) itemView.findViewById(R.id.item_checkbox);

            item_name = (TextView) itemView.findViewById(R.id.item_name);

            item_price = (TextView) itemView.findViewById(R.id.item_price);

            customJiaJian = (CustomJiaJian) itemView.findViewById(R.id.custom_jiajian);

            item_delete = (ImageView) itemView.findViewById(R.id.item_delete);

            item_face = (ImageView) itemView.findViewById(R.id.item_face);

        }

    }

    UpdateListener updateListener;

    public void setUpdateListener(UpdateListener updateListener) {

        this.updateListener = updateListener;

    }

    //接口

    public interface UpdateListener {

        public void setTotal(String total, String num, boolean allCheck);

    }

}

ViewCallBack

public interface ViewCallBack {

    public void success(CartBean cartBean);

    public void failure(Exception e);

}

ImageLoaderUtils

public class ImageLoaderUtils {
public static DisplayImageOptions myInitOptions() {
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnFail(R.mipmap.ic_launcher)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.cacheInMemory(true)
.cacheOnDisc(true)

.considerExifParams(true)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.bitmapConfig(Bitmap.Config.RGB_565)
.resetViewBeforeLoading(true)
.build();
return options;
}

public static DisplayImageOptions myInitOptionsRadiu() {
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnFail(R.mipmap.ic_launcher)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.cacheInMemory(true)
.cacheOnDisc(true)
.considerExifParams(true)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.bitmapConfig(Bitmap.Config.RGB_565)
.resetViewBeforeLoading(true)
.displayer(new RoundedBitmapDisplayer(10))
.build();
return options;
}

}

LoggingInterceptor

public class LoggingInterceptor implements Interceptor {

    private static final String UA = "User-Agent";

    @Override

    public Response intercept(Chain chain) throws IOException {

        Request request = chain.request()

                .newBuilder()

                .addHeader(UA, makeUA())

                .build();

        return chain.proceed(request);

    }

    private String makeUA() {

        String s = Build.BRAND + "/" + Build.MODEL + "/" + Build.VERSION.RELEASE;

        return Build.BRAND + "/" + Build.MODEL + "/" + Build.VERSION.RELEASE;

    }

}

OkHttp3Utils

public class OkHttp3Utils {

    private static OkHttpClient okHttpClient = null;

    public OkHttp3Utils() {

    }

    private static OkHttpClient getOkHttpClient() {

        synchronized (OkHttp3Utils.class) {

            if (okHttpClient == null) {

                okHttpClient = new OkHttpClient();

            }

        }

        return okHttpClient;

    }

    //上传文件

    public static void loadFile(String url, File file,String fileName){

        OkHttpClient okHttpClient = getOkHttpClient();

        //设置文件类型

        RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"),file);

        //设置请求体

        RequestBody body = new MultipartBody.Builder()

                .setType(MultipartBody.FORM)

                .addFormDataPart("image",fileName,requestBody)

                .build();

        //请求方式

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

        okHttpClient.newCall(request).enqueue(new Callback() {

            @Override

            public void onFailure(Call call, IOException e) {

            }

            @Override

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

                Log.i("成功","成功");

            }

        });

    }

    /**

     * 1.接口地址

     * 2.接口回调

     */

    public static void doGet(String url,Callback callback){

        OkHttpClient okHttpClient = getOkHttpClient();

        Request request = new Request.Builder().url(url).build();

        okHttpClient.newCall(request).enqueue(callback);

    }

    /**

     * 1.地址

     * 2.接口回调

     * 3.请求体

     */

    public static void doPost(String url, Map<String,String> map,Callback callback){

        OkHttpClient okHttpClient = getOkHttpClient();

        FormBody.Builder builder = new FormBody.Builder();

        //遍历map集合   设置请求体

        for (String mapKey : map.keySet()){

           builder.add(mapKey,map.get(mapKey));

        }

        //设置请求方式

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

        //执行请求方式    接口回调

        okHttpClient.newCall(request).enqueue(callback);

    }

    /**

     *1.下载地址

     */

    public static void doDown(String url,Callback callback){

        OkHttpClient okHttpClient = getOkHttpClient();

        Request build = new Request.Builder().url(url).build();

        okHttpClient.newCall(build).enqueue(callback);

    }

}

OkHttpUtils

public class OkHttpUtils {

    private Handler handler=new Handler();

    public Handler getHandler(){

        return handler;

    }

    //单例

    private static OkHttpUtils okHttpUtils=new OkHttpUtils();

    private OkHttpUtils(){};

    public static OkHttpUtils getInstance(){

        return okHttpUtils;

    }

    private OkHttpClient client;

    private void initOkHttpClient(){

        if (client==null){

            client=new OkHttpClient.Builder().build();

        }

    }

    //公用的get请求方法  完成的功能不确定

    public void doGet(String url, Callback callback){

        initOkHttpClient();

        Request request=new Request.Builder().url(url).build();

        client.newCall(request).enqueue(callback);

    }

}

OnUiCallback

public abstract class OnUiCallback implements Callback {

    private Handler handler=OkHttpUtils.getInstance().getHandler();

    public abstract void onFailed(Call call,IOException e);

    public abstract void onSuccess(String result);

    @Override

    public void onFailure(final Call call, final IOException e) {

        //该方法就是把  线程post到handler所在的线程

        handler.post(new Runnable() {

            @Override

            public void run() {

//                e.getMessage()

                onFailed(call,e);

            }

        });

    }

    @Override

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

        final String result=response.body().string();

        handler.post(new Runnable() {

            @Override

            public void run() {

                onSuccess(result);

            }

        });

    }

}

util2

AbstractUiCallBack

public abstract  class AbstractUiCallBack<T> implements Callback{

    public abstract void success(T t);

    public abstract void fail(Exception e);

    private Handler handler = null;

    private Class clazz;

    public AbstractUiCallBack(){

        handler = new Handler(Looper.getMainLooper());

        Type type = getClass().getGenericSuperclass();

        Type[] arr = ((ParameterizedType)type).getActualTypeArguments();

        clazz = (Class) arr[0];

    }

    @Override

    public void onFailure(Call call, IOException e) {

        fail(e);

    }

    @Override

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

        try {

            String result = response.body().string();

            Gson gson = new Gson();

            final  T t = (T) gson.fromJson(result,clazz);

            handler.post(new Runnable() {

                @Override

                public void run() {

                    success(t);//成功的回调出去

                }

            });

        }catch (Exception e){

            e.printStackTrace();

            fail(e);//失败的回调

        }

    }

}

IsInternet

public class IsInternet {

        public static boolean isNetworkAvalible(Context context) {

            // 获得网络状态管理器

            ConnectivityManager connectivityManager = (ConnectivityManager) context

                    .getSystemService(Context.CONNECTIVITY_SERVICE);

            if (connectivityManager == null) {

                return false;

            } else {

                // 建立网络数组

                NetworkInfo[] net_info = connectivityManager.getAllNetworkInfo();

                if (net_info != null) {

                    for (int i = 0; i < net_info.length; i++) {

                        // 判断获得的网络状态是否是处于连接状态

                        if (net_info[i].getState() == NetworkInfo.State.CONNECTED) {

                            return true;

                        }

                    }

                }

            }

            return false;

        }

        // 如果没有网络,则弹出网络设置对话框

        public static void checkNetwork(final Activity activity) {

            if (!IsInternet.isNetworkAvalible(activity)) {

                TextView msg = new TextView(activity);

                msg.setText("当前没有可以使用的网络,请设置网络!");

                new AlertDialog.Builder(activity)

                        .setIcon(R.mipmap.ic_launcher)

                        .setTitle("网络状态提示")

                        .setView(msg)

                        .setPositiveButton("确定",

                                new DialogInterface.OnClickListener() {

                                    public void onClick(DialogInterface dialog,

                                                        int whichButton) {

                                        // 跳转到设置界面

                                        activity.startActivityForResult(new Intent(

                                                        Settings.ACTION_WIRELESS_SETTINGS),

                                                0);

                                    }

                                }).create().show();

            }

            return;

        }

    }

MyInterceptor

public class MyInterceptor implements Interceptor {

    @Override

    public Response intercept(Chain chain) throws IOException {

        Request request = chain.request();

        //&source=android这个是get带参数

        //?source=android 这个是只能get不带传参,还有就是post

        String url = request.url().toString()+"?source=android";

        Request request1 = request.newBuilder().url(url).build();

        Response response = chain.proceed(request1);

        return response;

    }

}

OkhttpUtils

private static OkhttpUtils okhttpUtils = null;

    private OkhttpUtils(){

    }

    public static OkHttpClient client;

    public static OkhttpUtils getInstance(){

        if(okhttpUtils==null){

            okhttpUtils = new OkhttpUtils();

            client = new OkHttpClient.Builder()

                    .readTimeout(20, TimeUnit.SECONDS)

                    .writeTimeout(20,TimeUnit.SECONDS)

                    .connectTimeout(20,TimeUnit.SECONDS)

                    //.addInterceptor(new MyInterceptor())

                    .build();

        }

        return okhttpUtils;

    }

    public void asy(Map<String,String> params,String url,AbstractUiCallBack callBack){

        Request request = null;

        if(params!=null){

            FormBody.Builder builder = new FormBody.Builder();

            for(Map.Entry<String,String> entry : params.entrySet()){

                builder.add(entry.getKey(),entry.getValue());

            }

            FormBody body = builder.build();

            request = new Request.Builder()

                    .url(url)

                    .post(body)

                    .build();

        }else{

            request = new Request.Builder()

                    .url(url)

                    .build();

        }

        client.newCall(request).enqueue(callBack);

    }

}

CustomJiaJian

public class CustomJiaJian extends LinearLayout {

    private Button reverse;

    private Button add;

    private EditText countEdit;

    private int mCount =1;

    public CustomJiaJian(Context context) {

        super(context);

    }

    public CustomJiaJian(Context context, AttributeSet attrs) {

        super(context, attrs);

        View view = View.inflate(context, R.layout.custom_jiajian,this);

        reverse = (Button) view.findViewById(R.id.reverse);

        add = (Button) view.findViewById(R.id.add);

        countEdit = (EditText) view.findViewById(R.id.count);

        reverse.setOnClickListener(new OnClickListener() {

            @Override

            public void onClick(View v) {

                String content = countEdit.getText().toString().trim();

                int count = Integer.valueOf(content);

                if(count==1){

                    Toast.makeText(getContext(), "最小数量为1", Toast.LENGTH_SHORT).show();

                }

                if(count>1){

                    mCount = count-1;

                    countEdit.setText(mCount+"");

                    //回调给adapter里面

                    if(customListener!=null){

                        customListener.jiajian(mCount);

                    }

                }

            }

        });

        add.setOnClickListener(new OnClickListener() {

            @Override

            public void onClick(View v) {

                String content = countEdit.getText().toString().trim();

                int count = Integer.valueOf(content)+1;

                mCount = count;

                countEdit.setText(mCount+"");

                //接口回调给adapter

                if(customListener!=null){

                    customListener.jiajian(mCount);

                }

            }

        });

    }

    public CustomJiaJian(Context context, AttributeSet attrs, int defStyleAttr) {

        super(context, attrs, defStyleAttr);

    }

    CustomListener customListener;

    public void setCustomListener(CustomListener customListener){

        this.customListener = customListener;

    }

    //加减的接口

    public interface CustomListener{

        public void jiajian(int count);

        public void shuRuZhi(int count);

    }

    //这个方法是供recyadapter设置 数量时候调用的

    public void setEditText(int num) {

        if(countEdit !=null) {

            countEdit.setText(num + "");

        }

    }

}

CustomVideoView

public class CustomVideoView extends VideoView {

    public CustomVideoView(Context context) {

        super(context);

    }

    public CustomVideoView(Context context, AttributeSet attrs) {

        super(context, attrs);

    }

    public CustomVideoView(Context context, AttributeSet attrs, int defStyle) {

        super(context, attrs, defStyle);

    }

    @Override

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        //我们重新计算高度

        int width = getDefaultSize(0, widthMeasureSpec);

        int height = getDefaultSize(0, heightMeasureSpec);

        setMeasuredDimension(width, height);

    }

    @Override

    public void setOnPreparedListener(MediaPlayer.OnPreparedListener l) {

        super.setOnPreparedListener(l);

    }

    @Override

    public boolean onKeyDown(int keyCode, KeyEvent event) {

        return super.onKeyDown(keyCode, event);

    }

}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐