头像上传

//Rxjava
package com.example.ykmn_zh1.net;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

public class RxjavaUtils {

public static RxjavaUtils mInstance;
private final Retrofit build;

public  RxjavaUtils getmInstance() {

    if (mInstance == null){
        synchronized (RxjavaUtils.class){
            if (mInstance == null){
                mInstance = new RxjavaUtils();
            }
        }
    }

    return mInstance;
}

public RxjavaUtils(){
    HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
    httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .addInterceptor(httpLoggingInterceptor)
            .addNetworkInterceptor(httpLoggingInterceptor)
            .build();

    build = new Retrofit.Builder()
            .baseUrl("http://172.17.8.100/")
            .client(okHttpClient)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build();
}

public <T>T crate(Class<T> tClass){
    return build.create(tClass);
}

}

//MainView
package com.example.ykmn_zh1.mvp.view;

public interface MainView {

void success(Object data);

void fail(Object error);

}

//MainModel
package com.example.ykmn_zh1.mvp.model;

import okhttp3.MultipartBody;

public interface MainModel {

public interface CallBackListener{


    void success(Object data);

    void fail(Object error);
}

void doShop(CallBackListener listener);

void doTou(CallBackListener listener, MultipartBody.Part filePart);

}

//MainModelIml

package com.example.ykmn_zh1.mvp.model;

import com.example.ykmn_zh1.api.HttpListener;
import com.example.ykmn_zh1.bean.MainBean;
import com.example.ykmn_zh1.bean.TouXiang;
import com.example.ykmn_zh1.net.RxjavaUtils;

import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.subscribers.DisposableSubscriber;
import okhttp3.MultipartBody;

public class MainModelIml implements MainModel {

private HttpListener rxjava;

@Override
public void doShop(final CallBackListener listener) {
    rxjava = new RxjavaUtils().crate(HttpListener.class);

    rxjava.getShuju()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new DisposableSubscriber<MainBean>() {
                @Override
                public void onNext(MainBean mainBean) {
                    listener.success(mainBean);
                }

                @Override
                public void onError(Throwable t) {
                    t.printStackTrace();
                }

                @Override
                public void onComplete() {

                }
            });
}

@Override
public void doTou(final CallBackListener listener, MultipartBody.Part filePart) {
    rxjava = new RxjavaUtils().crate(HttpListener.class);

    rxjava.getTouXiang(4457,"15571132663074457",filePart)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new DisposableSubscriber<TouXiang>() {
                @Override
                public void onNext(TouXiang touXiang) {
                    listener.success(touXiang);
                }

                @Override
                public void onError(Throwable t) {

                }

                @Override
                public void onComplete() {

                }
            });
}

}

//MainPresenter

package com.example.ykmn_zh1.mvp.presenter;

import okhttp3.MultipartBody;

public interface MainPresenter {

void doShop();

void doTou( MultipartBody.Part filePart);

}

//MainPresenterIml
package com.example.ykmn_zh1.mvp.presenter;

import android.util.Log;

import com.example.ykmn_zh1.mvp.model.MainModel;
import com.example.ykmn_zh1.mvp.view.MainView;

import okhttp3.MultipartBody;

public class MainPresenterIml implements MainPresenter, MainModel.CallBackListener {

private MainModel mainModel;
private MainView mainView;

public MainPresenterIml(MainModel mainModel, MainView mainView) {
    this.mainModel = mainModel;
    this.mainView = mainView;
}

@Override
public void success(Object data) {
    Log.i("tag","运行到了");
    mainView.success(data);


}

@Override
public void fail(Object error) {
    mainView.fail(error);
}


@Override
public void doShop() {
    mainModel.doShop(this);

}

@Override
public void doTou(MultipartBody.Part filePart) {
    mainModel.doTou(this,filePart);
}


public void onDestory(){
    if (mainModel != null){
        mainModel = null;
    }
    if (mainView != null){
        mainView = null;
    }
}

}

//Api
package com.example.ykmn_zh1.api;

public class Api {

public static final String TOUXIANG = "small/user/verify/v1/modifyHeadPic";
public static final String SHANGPIN = "ks/product/getCarts?uid=51";

}

//HttpListener

package com.example.ykmn_zh1.api;

import com.example.ykmn_zh1.bean.MainBean;
import com.example.ykmn_zh1.bean.TouXiang;

import io.reactivex.Flowable;
import okhttp3.MultipartBody;
import retrofit2.http.Field;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;

public interface HttpListener {

@GET(Api.SHANGPIN)
Flowable<MainBean> getShuju();

@Multipart
@POST(Api.TOUXIANG)
Flowable<TouXiang> getTouXiang(@Header("userId") int userId, @Header("sessionId") String sessionId, @Part MultipartBody.Part filePart);

}

//Applica
package com.example.ykmn_zh1.app;

import android.app.Application;
import android.os.Environment;

import com.facebook.cache.disk.DiskCacheConfig;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.imagepipeline.core.ImagePipelineConfig;

public class Applica extends Application {

@Override
public void onCreate() {
    super.onCreate();

    DiskCacheConfig cacheConfig = DiskCacheConfig.newBuilder(this)
            .setBaseDirectoryName("fresco_images")
            .setBaseDirectoryPath(Environment.getExternalStorageDirectory())
            .build();

    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
            .setMainDiskCacheConfig(cacheConfig)
            .build();

    Fresco.initialize(this,config);
}

}

//Fragment1
package com.example.ykmn_zh1.fragment;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

import com.example.ykmn_zh1.R;
import com.example.ykmn_zh1.adapter.MainAdapter;
import com.example.ykmn_zh1.bean.MainBean;
import com.example.ykmn_zh1.mvp.model.MainModelIml;
import com.example.ykmn_zh1.mvp.presenter.MainPresenterIml;
import com.example.ykmn_zh1.mvp.view.MainView;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.List;

public class Fragment1 extends Fragment implements MainView, View.OnClickListener {

private XRecyclerView mXreCyclerView;
private MainAdapter mainAdapter;
private MainPresenterIml mainPresenterIml;
private List<MainBean.DataBean> list;
private CheckBox check_qx;
private TextView text_zj;
private TextView text_qjs;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment1, container, false);

    mXreCyclerView = view.findViewById(R.id.XreCyclerView);
    check_qx = view.findViewById(R.id.check_qx);
    check_qx.setOnClickListener(this);
    text_zj = view.findViewById(R.id.text_zj);
    text_qjs = view.findViewById(R.id.text_qjs);

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    mXreCyclerView.setLayoutManager(linearLayoutManager);

    mainAdapter = new MainAdapter(getActivity());
    mXreCyclerView.setAdapter(mainAdapter);

    mainPresenterIml = new MainPresenterIml(new MainModelIml(), this);
    mainPresenterIml.doShop();

    mainAdapter.setChannerListener(new MainAdapter.ChannerListener() {
        @Override
        public void changeList(List<MainBean.DataBean> list) {
            float price=0;
            int allNum=0;
            //全选
            for (int i = 0; i < list.size(); i++) {
                List<MainBean.DataBean.ListBean> childList = list.get(i).getList();//商家下的所有商品
                for (int j = 0; j <childList.size() ; j++) {
                    if (childList.get(j).isChekced()){
                        float p = childList.get(j).getPrice();
                        int n = childList.get(j).getNum();
                        price=price+(p*n);
                        allNum=allNum+n;
                    }

                }
            }
            text_zj.setText(price+"");
            text_qjs.setText(allNum+"");
        }
    });

    return view;
}

@Override
public void success(Object data) {
    MainBean mainBean = (MainBean) data;
    list = mainBean.getData();
    list.remove(0);
    mainAdapter.setList(list);
}

@Override
public void fail(Object error) {

}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.check_qx:
            float price=0;
            int allNum=0;
            boolean isChecked = check_qx.isChecked();//获取状态
            //全选
            for (int i = 0; i < list.size(); i++) {
                list.get(i).setChecked(isChecked);
                List<MainBean.DataBean.ListBean> childList = this.list.get(i).getList();//商家下的所有商品
                for (int j = 0; j <childList.size() ; j++) {
                    childList.get(j).setChekced(isChecked);
                    float p = childList.get(j).getPrice();
                    int n = childList.get(j).getNum();

                    price=price+(p*n);
                    allNum=allNum+n;
                }
            }
            if (!isChecked){
                price=0.0f;
                allNum=0;
            }
            text_zj.setText(price+"");
            text_qjs.setText(allNum+"");
            mainAdapter.setList(list);
            break;
    }
}

}

//buju

<?xml version="1.0" encoding="utf-8"?>

<com.jcodecraeer.xrecyclerview.XRecyclerView
    android:id="@+id/XreCyclerView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="9"></com.jcodecraeer.xrecyclerview.XRecyclerView>


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

    <CheckBox
        android:id="@+id/check_qx"
        android:text="全选"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/text_zj"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/text_qjs"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="wrap_content" />

</LinearLayout>

//MainAdapter

package com.example.ykmn_zh1.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;

import com.example.ykmn_zh1.R;
import com.example.ykmn_zh1.bean.MainBean;

import java.util.ArrayList;
import java.util.List;

public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ShowViewHolder>{

private Context context;
private List<MainBean.DataBean> list = new ArrayList<>();

public MainAdapter(Context context) {
    this.context = context;
}

@NonNull
@Override
public ShowViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = View.inflate(context, R.layout.main_adapter, null);
    ShowViewHolder showViewHolder = new ShowViewHolder(view);
    return showViewHolder;
}

@Override
public void onBindViewHolder(@NonNull final ShowViewHolder showViewHolder, final int i) {

    showViewHolder.check_sj.setChecked(list.get(i).isChecked());
    showViewHolder.text_sj.setText(list.get(i).getSellerName());

    MainShowAdapter mainShowAdapter = new MainShowAdapter(context,list.get(i).getList());
    final LinearLayoutManager linearLayoutManager=new LinearLayoutManager(context);
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    showViewHolder.recyclerView.setLayoutManager(linearLayoutManager);
    showViewHolder.recyclerView.setAdapter(mainShowAdapter);

    mainShowAdapter.setChannerListener(new MainShowAdapter.ChannerListener() {
        @Override
        public void changeList(List<MainBean.DataBean.ListBean> listChild) {
            int num=0;
            for (int j = 0; j <listChild.size(); j++) {
                if (listChild.get(j).isChekced()){
                    num++;
                }
                if (num==listChild.size()){
                    list.get(i).setChecked(true);
                }else{
                    list.get(i).setChecked(false);
                }
                notifyItemChanged(i);
                mChannerListener.changeList(list);
            }

        }
    });


    showViewHolder.check_sj.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            boolean isChecked = showViewHolder.check_sj.isChecked();
            list.get(i).setChecked(isChecked);
            List<MainBean.DataBean.ListBean> listChild = MainAdapter.this.list.get(i).getList();
            for (int j=0;j<listChild.size();j++){
                listChild.get(j).setChekced(isChecked);
            }
            notifyItemChanged(i);
            mChannerListener.changeList(list);
        }
    });


}

@Override
public int getItemCount()        {
    return list.size();
}

public void setList(List<MainBean.DataBean> list) {
    this.list = list;
    notifyDataSetChanged();
}

public class ShowViewHolder extends RecyclerView.ViewHolder{

    private RecyclerView recyclerView;
    private CheckBox check_sj;
    private TextView text_sj;

    public ShowViewHolder(@NonNull View itemView) {
        super(itemView);
        check_sj = itemView.findViewById(R.id.check_sj);
        text_sj = itemView.findViewById(R.id.text_sj);
        recyclerView = itemView.findViewById(R.id.recyclerView);
    }
}

private ChannerListener mChannerListener;
public void setChannerListener(ChannerListener mChannerListener){
    this.mChannerListener=mChannerListener;
}
public  interface ChannerListener{
    void changeList(List<MainBean.DataBean>list);
}

}

//MainShowAdapter

package com.example.ykmn_zh1.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;

import com.example.ykmn_zh1.R;
import com.example.ykmn_zh1.bean.MainBean;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.ArrayList;
import java.util.List;

public class MainShowAdapter extends RecyclerView.Adapter<MainShowAdapter.ShopViewHolder>{

private Context context;
private List<MainBean.DataBean.ListBean> listBeans = new ArrayList<>();


public MainShowAdapter(Context context, List<MainBean.DataBean.ListBean> listBeans) {
    this.context = context;
    this.listBeans = listBeans;
}


public void setListBeans(List<MainBean.DataBean.ListBean> listBeans) {
    this.listBeans = listBeans;
    notifyDataSetChanged();
}

@NonNull
@Override
public ShopViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = View.inflate(context, R.layout.adapter_show, null);
    ShopViewHolder shopViewHolder = new ShopViewHolder(view);
    return shopViewHolder;
}

@Override
public void onBindViewHolder(@NonNull final ShopViewHolder shopViewHolder, final int i) {

    shopViewHolder.check_sp.setChecked(listBeans.get(i).isChekced());
    shopViewHolder.simple.setImageURI(listBeans.get(i).getImages());
    shopViewHolder.text_sp.setText(listBeans.get(i).getTitle());
    shopViewHolder.text_jg.setText(listBeans.get(i).getPrice()+"");


    //判断商品是否选中
    shopViewHolder.check_sp.setChecked( listBeans.get(i).isChekced());

    shopViewHolder.check_sp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            boolean isChecket = shopViewHolder.check_sp.isChecked();
            listBeans.get(i).setChekced(isChecket);


            mChannerListener.changeList(listBeans);
        }
    });
}

@Override
public int getItemCount() {
    return listBeans.size();
}

public class ShopViewHolder extends RecyclerView.ViewHolder{

    private CheckBox check_sp;
    private SimpleDraweeView simple;
    private TextView text_sp;
    private TextView text_jg;

    public ShopViewHolder(@NonNull View itemView) {
        super(itemView);
        check_sp = itemView.findViewById(R.id.check_sp);
        simple = itemView.findViewById(R.id.simple);
        text_sp = itemView.findViewById(R.id.text_sp);
        text_jg = itemView.findViewById(R.id.text_jg);

    }
}

private ChannerListener mChannerListener;
public void setChannerListener(ChannerListener mChannerListener){
    this.mChannerListener=mChannerListener;
}
public  interface ChannerListener{
    void changeList(List<MainBean.DataBean.ListBean>list);
}

}

//头像上传

package com.example.ykmn_zh1.fragment;

import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost;
import android.widget.Toast;

import com.example.ykmn_zh1.R;
import com.example.ykmn_zh1.bean.TouXiang;
import com.example.ykmn_zh1.mvp.model.MainModelIml;
import com.example.ykmn_zh1.mvp.presenter.MainPresenterIml;
import com.example.ykmn_zh1.mvp.view.MainView;
import com.facebook.drawee.view.SimpleDraweeView;

import java.io.File;

import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;

public class Fragment2 extends Fragment implements MainView {

private SimpleDraweeView tou_simple;
private MainPresenterIml mainPresenterIml;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment2, container, false);

    tou_simple = view.findViewById(R.id.tou_simple);

    mainPresenterIml = new MainPresenterIml(new MainModelIml(), this);


    tou_simple.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(Intent.ACTION_PICK,null);
            intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
            startActivityForResult(intent,1);

        }
    });

    return view;
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode==1) {
        Uri uri = data.getData();
        tou_simple.setImageURI(uri);
        String[] arr={MediaStore.Images.Media.DATA};
        Cursor cursor = getActivity().managedQuery(uri, arr, null, null, null);
        int img_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        String img_path = cursor.getString(img_index);
        File file=new File(img_path);
        if (file!=null && file.exists()) {
            RequestBody requestBody=RequestBody.create(MediaType.parse("image/*"),file.getAbsoluteFile());
            MultipartBody.Part part = MultipartBody.Part.createFormData("image", file.getName(), requestBody);
            //调用头像的p层
            mainPresenterIml.doTou(part);

        }else{
            Toast.makeText(getActivity(), "请选择文件", Toast.LENGTH_SHORT).show();
        }



    }

}

@Override
public void success(Object data) {

        TouXiang touXiang= (TouXiang) data;
        Log.d("touxiangshangchuan", touXiang.getHeadPath());
        tou_simple.setImageURI(touXiang.getHeadPath());


}

@Override
public void fail(Object error) {

}

}

//HttpListener
package com.example.ykmn_zh1.api;

import com.example.ykmn_zh1.bean.MainBean;
import com.example.ykmn_zh1.bean.TouXiang;

import io.reactivex.Flowable;
import okhttp3.MultipartBody;
import retrofit2.http.Field;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;

public interface HttpListener {

@GET(Api.SHANGPIN)
Flowable<MainBean> getShuju();

@Multipart
@POST(Api.TOUXIANG)
Flowable<TouXiang> getTouXiang(@Header("userId") int userId, @Header("sessionId") String sessionId, @Part MultipartBody.Part filePart);

}

//权限

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值