购物车+上传头像①

xiaoxiao2021-02-28  22

导入依赖

com.github.bumptech.glide:glide:4.7.1'    annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'    //okhttp    compile 'com.squareup.okhttp3:okhttp:3.6.0'    compile 'com.squareup.okio:okio:1.11.0'    implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'    //gson    compile 'com.google.code.gson:gson:2.8.2'    compile 'com.jcodecraeer:xrecyclerview:1.3.2'

    implementation 'com.android.support:design:27.1.1'

Model

GetCartModel

package com.example.a1512qweek4.model;import com.example.a1512qweek4.net.OnNetListener;public interface GetCartsModel {    void getCarts(String uid, String token, OnNetListener onNetListener);

}

---------------------------------------------------------------------------------------------------------------

GetCartModelImp

package com.example.a1512qweek4.model; import com.example.a1512qweek4.net.Api; import com.example.a1512qweek4.net.OkhttpUtils; import com.example.a1512qweek4.net.OnNetListener; import java.util.HashMap; import java.util.Map; public class GetCartsModelImp implements GetCartsModel {     @Override     public void getCarts(String uid, String token, final OnNetListener onNetListener) {         Map<String, String> params = new HashMap<>();         params.put("uid", uid);         params.put("token", token);         OkhttpUtils.getInstance().doPost(Api.GETCARTS_URL, params, new OnNetListener() {             @Override             public void onSuccess(String result) {                 onNetListener.onSuccess(result);             }             @Override             public void onFailed(Exception e) {                 onNetListener.onFailed(e);             }         });     }

}

-------------------------------------------------------------------------------------------------------------------------------

UpdateCartModel

package com.example.a1512qweek4.model; import com.example.a1512qweek4.net.OnNetListener; public interface UpdateCartsModel {     void updateCarts(String uid, String sellerid, String pid, String num, String selected, String token,                      OnNetListener onNetListener);

}

-----------------------------------------------------------------------------------------------------------------------------

UpdateCartModelImp

package com.example.a1512qweek4.model;import com.example.a1512qweek4.net.Api;import com.example.a1512qweek4.net.OkhttpUtils;import com.example.a1512qweek4.net.OnNetListener;import java.util.HashMap;import java.util.Map;public class UpdateCartsModelImp implements UpdateCartsModel{    @Override    public void updateCarts(String uid, String sellerid, String pid, String num, String selected, String token, final OnNetListener onNetListener) {        Map<String,String> params = new HashMap<>();        params.put("uid",uid);        params.put("sellerid",sellerid);        params.put("pid",pid);        params.put("num",num);        params.put("selected",selected);        params.put("token",token);        OkhttpUtils.getInstance().doPost(Api.UPDATECARTS_URL, params, new OnNetListener() {            @Override            public void onSuccess(String result) {                onNetListener.onSuccess(result);            }            @Override            public void onFailed(Exception e) {                onNetListener.onFailed(e);            }        });    }

}

---------------------------------------------------------------------------------------------------------------------------------

Presenter

GetCartPresenter

package com.example.a1512qweek4.presenter; public interface GetCartsPresenter {     void getCarts(String uid, String token); }

---------------------------------------------------------------------------------------------------------------------------------

GetCartPresenterImp

package com.example.a1512qweek4.presenter;import com.example.a1512qweek4.bean.GetCartsBean;import com.example.a1512qweek4.bean.SellerBean;import com.example.a1512qweek4.model.GetCartsModelImp;import com.example.a1512qweek4.net.OnNetListener;import com.example.a1512qweek4.view.GetCartsView;import com.google.gson.Gson;import java.util.ArrayList;import java.util.List;public class GetCartsPresenterImp implements GetCartsPresenter {    private final GetCartsModelImp getCartsModelImp;    private GetCartsView getCartsView;    public GetCartsPresenterImp(GetCartsView getCartsView) {        this.getCartsView = getCartsView;        getCartsModelImp = new GetCartsModelImp();    }    public void detach() {        if (getCartsView != null) {            getCartsView = null;        }    }    @Override    public void getCarts(String uid, String token) {        getCartsModelImp.getCarts(uid, token, new OnNetListener() {            @Override            public void onSuccess(String result) {                //给View层显示                if (getCartsView != null) {                    List<SellerBean> groupList = new ArrayList<>();                    List<List<GetCartsBean.DataBean.ListBean>> childList = new ArrayList<>();                    //解析服务器返回的数据                    GetCartsBean getCartsBean = new Gson().fromJson(result, GetCartsBean.class);                    //需要对返回的数据进行二次封装,以满足二级列表显示的需要                    List<GetCartsBean.DataBean> data = getCartsBean.getData();                    for (int i = 0; i < data.size(); i++) {                        GetCartsBean.DataBean dataBean = data.get(i);                        //封装二级列表数据                        List<GetCartsBean.DataBean.ListBean> list = dataBean.getList();                        childList.add(list);                        //封装一级列表数据                        SellerBean sellerBean = new SellerBean();                        sellerBean.setSellName(dataBean.getSellerName());                        sellerBean.setSellId(dataBean.getSellerid());                        sellerBean.setChecked(isSellerChecked(list));                        groupList.add(sellerBean);                    }                    getCartsView.show(groupList, childList);                }            }            @Override            public void onFailed(Exception e) {            }        });    }    private boolean isSellerChecked(List<GetCartsBean.DataBean.ListBean> list) {        for (int i = 0; i < list.size(); i++) {            GetCartsBean.DataBean.ListBean listBean = list.get(i);            if (listBean.getSelected() == 0) {                return false;            }        }        return true;    }

}

---------------------------------------------------------------------------------------------------------------------------------

UpdateCartPresenter

package com.example.a1512qweek4.presenter; public interface UpdateCartsPresenter {     void updateCarts(String uid, String sellerid, String pid, String num, String selected, String token);

}

---------------------------------------------------------------------------------------------------------------------------------

UpdateCartPresenterImp

package com.example.a1512qweek4.presenter; import com.example.a1512qweek4.model.UpdateCartsModelImp; import com.example.a1512qweek4.net.OnNetListener; import com.example.a1512qweek4.view.UpdataCartsView; public class UpdateCartsPresenterImp implements UpdateCartsPresenter {     private final UpdateCartsModelImp updateCartsModelImp;     private UpdataCartsView updataCartsView;     public UpdateCartsPresenterImp(UpdataCartsView updataCartsView) {         this.updataCartsView = updataCartsView;         updateCartsModelImp = new UpdateCartsModelImp();     }     @Override     public void updateCarts(String uid, String sellerid, String pid, String num, String selected, String token) {         updateCartsModelImp.updateCarts(uid, sellerid, pid, num, selected, token, new OnNetListener() {             @Override             public void onSuccess(String result) {                 if (updataCartsView != null) {                     updataCartsView.updateSucess();                 }             }             @Override             public void onFailed(Exception e) {             }         });     }

}

----------------------------------------------------------------------------------------------------------------------------

View

GetCartView

package com.example.a1512qweek4.view;import com.example.a1512qweek4.bean.GetCartsBean;import com.example.a1512qweek4.bean.SellerBean;import java.util.List;public interface GetCartsView {    void show(List<SellerBean> groupList, List<List<GetCartsBean.DataBean.ListBean>> childList);}

-------------------------------------------------------------------------------------------------------------------------------

UpdateCartView

package com.example.a1512qweek4.view; public interface UpdataCartsView {     void updateSucess();

}

-------------------------------------------------------------------------------------------------------------------------------

net

Api

package com.example.a1512qweek4.net;public interface Api {    String GETCARTS_URL = "https://www.zhaoapi.cn/product/getCarts";    String LOGIN_URL = "https://www.zhaoapi.cn/user/login?mobile=18310830365&password=123456";    String UPDATECARTS_URL = "https://www.zhaoapi.cn/product/updateCarts";    String UPLOADHEADER = "https://www.zhaoapi.cn/file/upload";

}

----------------------------------------------------------------------------------------------------------------------------

MyIntercerport

package com.example.a1512qweek4.net; import java.io.IOException; import okhttp3.FormBody; import okhttp3.HttpUrl; import okhttp3.Interceptor; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; /**  * 自定义拦截器封装公共参数  */ public class MyInterceptor implements Interceptor {     private Response response;     @Override     public Response intercept(Chain chain) throws IOException {         //获取原始的Request请求         Request originalRequest = chain.request();         //判断是GET请求还是POST请求         String method = originalRequest.method();         if ("GET".equals(method)) { //            String orginalUrl = originalRequest.url().toString(); //            String url = orginalUrl+"&source=android";             HttpUrl httpUrl = originalRequest.url()                     .newBuilder()                     .addQueryParameter("source", "android")                     .build();             Request request = new Request.Builder()                     .url(httpUrl)                     .build();             //发送拼接完成后的请求             response = chain.proceed(request);         } else {             RequestBody requestBody = originalRequest.body();             if (requestBody instanceof FormBody) {                 FormBody.Builder builder = new FormBody.Builder();                 FormBody originalformBody = (FormBody) originalRequest.body();                 for (int i = 0; i < originalformBody.size(); i++) {                     builder.add(originalformBody.name(i), originalformBody.value(i));                 }                 builder.add("source", "android");                 FormBody formBody = builder.build();                 Request request = originalRequest.newBuilder().post(formBody).build();                 response = chain.proceed(request);             } else {                 //发送请求                 response = chain.proceed(originalRequest);             }         }         return response;     }

}

---------------------------------------------------------------------------------------------------------------------------------

OkhttpUtils

package com.example.a1512qweek4.net; import android.os.Handler; import android.os.Looper; import java.io.File; import java.io.IOException; import java.util.Map; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; import okhttp3.logging.HttpLoggingInterceptor; public class OkhttpUtils {     private static OkhttpUtils instance;     private final OkHttpClient okHttpClient;     private final Handler handler;     private OkhttpUtils() {         HttpLoggingInterceptor logging = new HttpLoggingInterceptor();         logging.setLevel(HttpLoggingInterceptor.Level.BODY);         okHttpClient = new OkHttpClient.Builder()                 .connectTimeout(15, TimeUnit.SECONDS)//连接超时                 .writeTimeout(20, TimeUnit.SECONDS)//写入超时                 .readTimeout(20, TimeUnit.SECONDS)//读取超时                 .addInterceptor(new MyInterceptor())                 .addInterceptor(logging)                 .build();         handler = new Handler(Looper.getMainLooper());     }     public static OkhttpUtils getInstance() {         if (instance == null) {             instance = new OkhttpUtils();         }         return instance;     }     /**      * GET请求      *      * @param url      */     public void doGet(String url, final OnNetListener onNetListener) {         //创建Request         final Request request = new Request.Builder()                 .url(url)                 .build();         //发送请求         okHttpClient.newCall(request).enqueue(new Callback() {             @Override             public void onFailure(Call call, final IOException e) {                 handler.post(new Runnable() {                     @Override                     public void run() {                         onNetListener.onFailed(e);                     }                 });             }             @Override             public void onResponse(Call call, Response response) throws IOException {                 //拿到服务器返回的数据                 final String string = response.body().string();                 handler.post(new Runnable() {                     @Override                     public void run() {                         onNetListener.onSuccess(string);                     }                 });             }         });     }     /**      * POST请求      *      * @param url      * @param params      * @param onNetListener      */     public void doPost(String url, Map<String, String> params, final OnNetListener onNetListener) {         FormBody.Builder builder = new FormBody.Builder();         for (Map.Entry<String, String> entry : params.entrySet()) {             builder.add(entry.getKey(), entry.getValue());         }         //创建FormBody         FormBody formBody = builder.build();         //创建Request         Request request = new Request.Builder()                 .url(url)                 .post(formBody)                 .build();         //请求数据         okHttpClient.newCall(request).enqueue(new Callback() {             @Override             public void onFailure(Call call, final IOException e) {                 handler.post(new Runnable() {                     @Override                     public void run() {                         onNetListener.onFailed(e);                     }                 });             }             @Override             public void onResponse(Call call, Response response) throws IOException {                 //拿到服务器返回的数据                 final String string = response.body().string();                 handler.post(new Runnable() {                     @Override                     public void run() {                         onNetListener.onSuccess(string);                     }                 });             }         });     }     public void uploadFile(String url, Map<String, String> params, String fileName, File file, final OnNetListener             onNetListener) {         MultipartBody.Builder builder = new MultipartBody.Builder();         builder.setType(MultipartBody.FORM);         //上传参数         for (Map.Entry<String, String> entry : params.entrySet()) {             builder.addFormDataPart(entry.getKey(), entry.getValue());         }         builder.addFormDataPart("file", fileName, RequestBody.create(MediaType.parse("application/octet-stream"),                 file));         MultipartBody multipartBody = builder.build();         final Request request = new Request.Builder()                 .url(url)                 .post(multipartBody)                 .build();         okHttpClient.newCall(request).enqueue(new Callback() {             @Override             public void onFailure(Call call, final IOException e) {                 handler.post(new Runnable() {                     @Override                     public void run() {                         onNetListener.onFailed(e);                     }                 });             }             @Override             public void onResponse(Call call, Response response) throws IOException {                 final String string = response.body().string();                 handler.post(new Runnable() {                     @Override                     public void run() {                         onNetListener.onSuccess(string);                     }                 });             }         });     }

}

-------------------------------------------------------------------------------------------------------------------------------

OnNetListener

package com.example.a1512qweek4.net;public interface OnNetListener {    void onSuccess(String result);    void onFailed(Exception e);

}

--------------------------------------------------------------------------------------------------------------------------------

AddSubView

package com.example.a1512qweek4; import android.content.Context; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.LinearLayout; import android.widget.TextView; public class AddSubView extends LinearLayout {     private TextView tvSub;     private TextView tvNum;     private TextView tvAdd;     public AddSubView(Context context) {         this(context, null);     }     public AddSubView(Context context, @Nullable AttributeSet attrs) {         super(context, attrs);         //初始化布局         LayoutInflater.from(context).inflate(R.layout.addsubview, this);         tvSub = findViewById(R.id.tvSub);         tvNum = findViewById(R.id.tvNum);         tvAdd = findViewById(R.id.tvAdd);     }     public void setNum(String num) {         tvNum.setText(num);     }     public String getNum() {         return tvNum.getText().toString();     }     public void setOnSubClickListener(OnClickListener onClickListener){         tvSub.setOnClickListener(onClickListener);     }     public void setOnAddClickListener(OnClickListener onClickListener){         tvAdd.setOnClickListener(onClickListener);     }

}

------------------------------------------------------------------------------------------------------------------------------

ElvAdapter

package com.example.a1512qweek4; import android.content.Context; import android.content.SharedPreferences; import android.view.LayoutInflater; 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 android.widget.Toast; import com.bumptech.glide.Glide; import com.example.a1512qweek4.bean.GetCartsBean; import com.example.a1512qweek4.bean.SellerBean; import com.example.a1512qweek4.presenter.GetCartsPresenterImp; import com.example.a1512qweek4.presenter.UpdateCartsPresenterImp; import com.example.a1512qweek4.view.UpdataCartsView; import java.util.List; public class ElvAdapter extends BaseExpandableListAdapter implements UpdataCartsView {     private final String uid;     private final String token;     private Context context;     private LayoutInflater inflater;     private List<SellerBean> groupList;     private List<List<GetCartsBean.DataBean.ListBean>> childList;     private final UpdateCartsPresenterImp updateCartsPresenterImp;     private GetCartsPresenterImp getCartsPresenterImp;     private int childIndex;     private boolean isSellerChecked;//商家是否选中     private int groupIndex;//表示当前点击的是哪个商家     private static final int GET_CARTS = 0;     private static final int UPDATE_CART = 1;     private static final int UPDATE_SELLER = 2;     public static int state;     public ElvAdapter(Context context, List<SellerBean> groupList, List<List<GetCartsBean.DataBean.ListBean>>             childList, GetCartsPresenterImp getCartsPresenterImp) {         this.context = context;         this.groupList = groupList;         this.childList = childList;         this.getCartsPresenterImp = getCartsPresenterImp;         inflater = LayoutInflater.from(context);         //绑定         updateCartsPresenterImp = new UpdateCartsPresenterImp(this);         //从SharedPreferences获取登录时保存的uid和token值         SharedPreferences sharedPreferences = context.getSharedPreferences("user", Context.MODE_PRIVATE);         uid = sharedPreferences.getString("uid", "");         token = sharedPreferences.getString("token", "");     }     @Override     public int getGroupCount() {         return groupList.size();     }     @Override     public int getChildrenCount(int groupPosition) {         return childList.get(groupPosition).size();     }     @Override     public Object getGroup(int groupPosition) {         return groupList.get(groupPosition);     }     @Override     public Object getChild(int groupPosition, int childPosition) {         return childList.get(groupPosition).get(childPosition);     }     @Override     public long getGroupId(int groupPosition) {         return groupPosition;     }     @Override     public long getChildId(int groupPosition, int childPosition) {         return childPosition;     }     @Override     public boolean hasStableIds() {         return true;     }     @Override     public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {         final GroupViewHolder groupViewHolder;         if (convertView == null) {             groupViewHolder = new GroupViewHolder();             convertView = inflater.inflate(R.layout.elv_group_item, null);             groupViewHolder.cbGroup = convertView.findViewById(R.id.cbGroup);             convertView.setTag(groupViewHolder);         } else {             groupViewHolder = (GroupViewHolder) convertView.getTag();         }         //设置值         final SellerBean sellerBean = groupList.get(groupPosition);         groupViewHolder.cbGroup.setText(sellerBean.getSellName());         groupViewHolder.cbGroup.setChecked(sellerBean.isChecked());         //给商家设置点击事件         groupViewHolder.cbGroup.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 state = UPDATE_CART;                 groupIndex = groupPosition;                 //更新购物车列表                 isSellerChecked = groupViewHolder.cbGroup.isChecked();                 //初始化商品的下标为0                 childIndex = 0;                 updateProduct();             }         });         return convertView;     }     @Override     public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup             parent) {         final ChildViewHolder childViewHolder;         if (convertView == null) {             childViewHolder = new ChildViewHolder();             convertView = inflater.inflate(R.layout.elv_child_item, null);             childViewHolder.cbChild = convertView.findViewById(R.id.cbChild);             childViewHolder.iv = convertView.findViewById(R.id.iv);             childViewHolder.tvTitle = convertView.findViewById(R.id.tvTitle);             childViewHolder.tvPrice = convertView.findViewById(R.id.tvPrice);             childViewHolder.addSubView = convertView.findViewById(R.id.addSub);             convertView.setTag(childViewHolder);         } else {             childViewHolder = (ChildViewHolder) convertView.getTag();         }         //设置值         final GetCartsBean.DataBean.ListBean listBean = childList.get(groupPosition).get(childPosition);         childViewHolder.cbChild.setChecked(listBean.getSelected() == 0 ? false : true);         Glide.with(context).load(listBean.getImages().split("\\|")[0]).into(childViewHolder.iv);         childViewHolder.tvTitle.setText(listBean.getTitle());         childViewHolder.tvPrice.setText("优惠价:¥" + listBean.getPrice());         childViewHolder.addSubView.setNum(listBean.getNum() + "");         //给cbChild设置点击事件         childViewHolder.cbChild.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 state = GET_CARTS;                 //更新购物车列表                 boolean checked = childViewHolder.cbChild.isChecked();                 String selected = checked ? "1" : "0";                 int sellerid = listBean.getSellerid();                 int pid = listBean.getPid();                 String num = childViewHolder.addSubView.getNum();                 updateCartsPresenterImp.updateCarts(uid, sellerid + "", pid + "", num, selected, token);             }         });         //给减号设置点击事件         childViewHolder.addSubView.setOnSubClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 state = GET_CARTS;                 //更新购物车列表                 boolean checked = childViewHolder.cbChild.isChecked();                 String selected = checked ? "1" : "0";                 int sellerid = listBean.getSellerid();                 int pid = listBean.getPid();                 String num = childViewHolder.addSubView.getNum();                 int n = Integer.parseInt(num);                 if (n <= 1) {                     Toast.makeText(context, "商品数量不能小于1", Toast.LENGTH_SHORT).show();                     return;                 }                 num = (n - 1) + "";                 updateCartsPresenterImp.updateCarts(uid, sellerid + "", pid + "", num, selected, token);             }         });         //给加号设置点击事件         childViewHolder.addSubView.setOnAddClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 state = GET_CARTS;                 //更新购物车列表                 boolean checked = childViewHolder.cbChild.isChecked();                 String selected = checked ? "1" : "0";                 int sellerid = listBean.getSellerid();                 int pid = listBean.getPid();                 String num = childViewHolder.addSubView.getNum();                 int n = Integer.parseInt(num);                 num = (n + 1) + "";                 updateCartsPresenterImp.updateCarts(uid, sellerid + "", pid + "", num, selected, token);             }         });         return convertView;     }     @Override     public boolean isChildSelectable(int groupPosition, int childPosition) {         return true;     }     class GroupViewHolder {         CheckBox cbGroup;         TextView tvSeller;     }     class ChildViewHolder {         CheckBox cbChild;         ImageView iv;         TextView tvTitle;         TextView tvPrice;         AddSubView addSubView;     }     private void updateProduct() {         String selected = isSellerChecked ? "1" : "0";         SellerBean sellerBean = groupList.get(groupIndex);         String sellerid = sellerBean.getSellId();         List<GetCartsBean.DataBean.ListBean> listBeans = childList.get(groupIndex);         int pid = listBeans.get(childIndex).getPid();         int num = listBeans.get(childIndex).getNum();         updateCartsPresenterImp.updateCarts(uid, sellerid, pid + "", num + "", selected, token);     }     public void updateSeller(boolean isChecked) {         state = UPDATE_SELLER;         isSellerChecked = isChecked;         groupIndex = 0;         childIndex = 0;         updateProduct();     }     /*   更新购物车成功回调接口    */     @Override     public void updateSucess() {         switch (state) {             case GET_CARTS:                 //更新成功后,再次调用获取购物车的接口                 getCartsPresenterImp.getCarts(uid, token);                 break;             case UPDATE_CART:                 childIndex++;                 if (childIndex >= childList.get(groupIndex).size()) {                     //更新成功后,再次调用获取购物车的接口 //                    getCartsPresenterImp.getCarts(uid, token);                     state = GET_CARTS;                     updateSucess();                 } else {                     updateProduct();                 }                 break;             case UPDATE_SELLER:                 childIndex++;                 if (childIndex >= childList.get(groupIndex).size()) {                     //该商家下的所有商品都已更新完成,接着更新其它商家下的商品                     groupIndex++;                     if (groupIndex>=groupList.size()){                         //所有商家都已更新完成,重新获取购物车 //                    getCartsPresenterImp.getCarts(uid, token);                         state = GET_CARTS;                         updateSucess();                     }else{                         //还有别的商家未更新                         childIndex = 0;                         updateProduct();                     }                 }else{                     updateProduct();                 }                 break;         }     }

}

-----------------------------------------------------------------------------------------------------------------------------

MainActivity

package com.example.a1512qweek4.view; import android.content.Context; 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.CheckBox; import android.widget.ExpandableListView; import android.widget.TextView; import com.example.a1512qweek4.ElvAdapter; import com.example.a1512qweek4.R; import com.example.a1512qweek4.bean.GetCartsBean; import com.example.a1512qweek4.bean.SellerBean; import com.example.a1512qweek4.presenter.GetCartsPresenterImp; import java.util.List; public class MainActivity extends AppCompatActivity implements GetCartsView, View.OnClickListener {     private ExpandableListView mElv;     /**      * 全选/反选      */     private CheckBox mCbAll;     /**      * 总价      */     private TextView mTvMoney;     private TextView mTvTotal;     private GetCartsPresenterImp getCartsPresenterImp;     private ElvAdapter elvAdapter;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         initView();         SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);         String uid = sharedPreferences.getString("uid", "");         String token = sharedPreferences.getString("token", "");         //绑定         getCartsPresenterImp = new GetCartsPresenterImp(this);         getCartsPresenterImp.getCarts(uid, token);     }     @Override     protected void onDestroy() {         super.onDestroy();         getCartsPresenterImp.detach();     }     @Override     public void show(List<SellerBean> groupList, List<List<GetCartsBean.DataBean.ListBean>> childList) {         elvAdapter = new ElvAdapter(this, groupList, childList, getCartsPresenterImp);         mElv.setAdapter(elvAdapter);         for (int i = 0; i < groupList.size(); i++) {             mElv.expandGroup(i);         }     }     private void initView() {         mElv = (ExpandableListView) findViewById(R.id.elv);         mCbAll = (CheckBox) findViewById(R.id.cbAll);         mTvMoney = (TextView) findViewById(R.id.tvMoney);         mTvTotal = (TextView) findViewById(R.id.tvTotal);         mCbAll.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 if (elvAdapter != null) {                     elvAdapter.updateSeller(mCbAll.isChecked());                 }             }         });         mTvTotal.setOnClickListener(this);     }     @Override     public void onClick(View v) {         switch (v.getId()) {             default:                 break;             case R.id.tvTotal:                 //跳转到我的页面                 Intent intent = new Intent(MainActivity.this,MineActivity.class);                 startActivity(intent);                 break;         }     }

}

------------------------------------------------------------------------------------------------------------------------------

LoginActivity

package com.example.a1512qweek4.view; import android.content.Context; 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.Toast; import com.example.a1512qweek4.R; import com.example.a1512qweek4.bean.UserBean; import com.example.a1512qweek4.net.Api; import com.example.a1512qweek4.net.OkhttpUtils; import com.example.a1512qweek4.net.OnNetListener; import com.google.gson.Gson; public class LoginActivity extends AppCompatActivity implements View.OnClickListener {     /**      * 登录      */     private Button mBt;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_login);         initView();     }     private void initView() {         mBt = (Button) findViewById(R.id.bt);         mBt.setOnClickListener(this);     }     @Override     public void onClick(View v) {         switch (v.getId()) {             default:                 break;             case R.id.bt:                 OkhttpUtils.getInstance().doGet(Api.LOGIN_URL, new OnNetListener() {                     @Override                     public void onSuccess(String result) {                         UserBean userBean = new Gson().fromJson(result, UserBean.class);                         //保存用户信息                         SharedPreferences sharedPreferences = LoginActivity.this.getSharedPreferences("user", Context                                 .MODE_PRIVATE);                         SharedPreferences.Editor edit = sharedPreferences.edit();                         edit.putString("uid", userBean.getData().getUid() + "");                         edit.putString("token", userBean.getData().getToken());                         edit.commit();                         Toast.makeText(LoginActivity.this,"登录成功",Toast.LENGTH_SHORT).show();                         //跳转到购物车页面                         Intent intent = new Intent(LoginActivity.this,MainActivity.class);                         startActivity(intent);                         //关闭当前页面                         LoginActivity.this.finish();                     }                     @Override                     public void onFailed(Exception e) {                     }                 });                 break;         }     }

}

--------------------------------------------------------------------------------------------------------------------------------

MineActivity

package com.example.a1512qweek4.view; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.view.Gravity; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.TextView; import android.widget.Toast; import com.example.a1512qweek4.R; import com.example.a1512qweek4.net.Api; import com.example.a1512qweek4.net.OkhttpUtils; import com.example.a1512qweek4.net.OnNetListener; import java.io.File; import java.io.FileOutputStream; import java.util.HashMap; import java.util.Map; public class MineActivity extends AppCompatActivity implements View.OnClickListener {     private ImageView mIv;     private LinearLayout mLl;     private PopupWindow popupWindow;     private String imgPath;     private String imgCropPath;     private Uri imageFileUri;     private String uid;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_mine);         imgPath = getExternalCacheDir().getPath() + "/header.jpg";         imgCropPath = getExternalCacheDir().getPath() + "/header_crop.jpg";         File file = new File(imgPath);         imageFileUri = Uri.fromFile(file);         initView();         SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);         uid = sharedPreferences.getString("uid", "");     }     private void initView() {         mIv = (ImageView) findViewById(R.id.iv);         mIv.setOnClickListener(this);         mLl = (LinearLayout) findViewById(R.id.ll);     }     @Override     public void onClick(View v) {         switch (v.getId()) {             default:                 break;             case R.id.iv:                 //弹出PopupWindow                 View view = View.inflate(MineActivity.this, R.layout.pop_item, null);                 initPopItem(view);                 popupWindow = new PopupWindow(view, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout                         .LayoutParams.WRAP_CONTENT);                 popupWindow.setOutsideTouchable(true);                 popupWindow.setBackgroundDrawable(new ColorDrawable());                 popupWindow.showAtLocation(mLl, Gravity.BOTTOM, 0, 0);                 break;         }     }     @Override     protected void onActivityResult(int requestCode, int resultCode, Intent data) {         switch (requestCode) {             case 1000:                 if (resultCode == RESULT_OK) {                     //拍照成功,剪切图片                     Toast.makeText(MineActivity.this, "拍照成功", Toast.LENGTH_SHORT).show();                     crop(imageFileUri);                 }                 break;             case 2000:                 try {                     //拍照后裁剪成功                     //先获取裁剪后的图片                     Bitmap bitmap = data.getParcelableExtra("data");                     File file = new File(imgCropPath);                     //判断该文件创建                     if (file.exists()) {                         file.delete();                     }                     //创建出新的文件                     file.createNewFile();                     FileOutputStream fos = new FileOutputStream(file);                     //把裁剪后的图片保存到本地                     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);                     //上传到服务器                     Map<String, String> params = new HashMap<>();                     params.put("uid", uid);                     OkhttpUtils.getInstance().uploadFile(Api.UPLOADHEADER, params, "header_crop.jpg", file, new                             OnNetListener() {                                 @Override                                 public void onSuccess(String result) {                                     Toast.makeText(MineActivity.this, result, Toast.LENGTH_SHORT).show();                                 }                                 @Override                                 public void onFailed(Exception e) {                                 }                             });                 } catch (Exception e) {                     e.printStackTrace();                 }                 break;             case 3000:                 Uri uri = data.getData();                 crop(uri);                 break;         }     }     private void crop(Uri uri) {         Intent intent = new Intent();         //指定裁剪的动作         intent.setAction("com.android.camera.action.CROP");         //设置裁剪的数据(uri路径)....裁剪的类型(image/*)         intent.setDataAndType(uri, "image/*");         //执行裁剪的指令         intent.putExtra("crop", "true");         //指定裁剪框的宽高比         intent.putExtra("aspectX", 1);         intent.putExtra("aspectY", 1);         //指定输出的时候宽度和高度         intent.putExtra("outputX", 300);         intent.putExtra("outputY", 300);         //设置取消人脸识别         intent.putExtra("noFaceDetection", false);         //设置返回数据         intent.putExtra("return-data", true);         //         startActivityForResult(intent, 2000);     }     private void initPopItem(View view) {         TextView tvCamera = view.findViewById(R.id.tvCamera);         TextView tvCancle = view.findViewById(R.id.tvCancle);         TextView tvPhoto = view.findViewById(R.id.tvPhoto);         tvCamera.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 if (popupWindow != null && popupWindow.isShowing()) {                     popupWindow.dismiss();                 }                 //调用相机,需要隐式意图                 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);                 intent.putExtra(MediaStore.EXTRA_OUTPUT, imageFileUri);                 startActivityForResult(intent, 1000);             }         });         tvPhoto.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 if (popupWindow != null && popupWindow.isShowing()) {                     popupWindow.dismiss();                 }                 Intent intent = new Intent();                 //指定选择/获取的动作...PICK获取,拿                 intent.setAction(Intent.ACTION_PICK);                 //指定获取的数据的类型                 intent.setType("image/*");                 startActivityForResult(intent, 3000);             }         });         tvCancle.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 if (popupWindow != null && popupWindow.isShowing()) {                     popupWindow.dismiss();                 }             }         });     }

}

转载请注明原文地址: https://www.6miu.com/read-2632938.html

最新回复(0)