//用户上传头像
   @POST(UrlUtil.MODIFY_HEAD_PIC)
    @Multipart
    Observable<HeadPicBean> headPic(@Part MultipartBody.Part image, @Header(\"userId\")int userId, @Header(\"sessionId\")String sessionId);

MVP

CallBack

  package com.jia.dimensions_of_electricity.mine.myprofile.headpic;

public interface HeadPicCallBack<T> {
    void onHeadPicCallBackSuccess(HeadPicBean headPicBean);
    void onHeadPicCallBackFailure(String msg);
}

View

package com.jia.dimensions_of_electricity.mine.myprofile.headpic;

public interface HeadPicView {
    void onHeadPicViewSuccess(HeadPicBean headPicBean);
    void onHeadPicViewFailure(String msg);
}

Model

package com.jia.dimensions_of_electricity.mine.myprofile.headpic;

import com.jia.dimensions_of_electricity.net.RetrofitApi;
import com.jia.dimensions_of_electricity.net.RetrofitService;
import com.jia.dimensions_of_electricity.util.SpUtil;

import java.io.File;

import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import rx.Observable;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

public class HeadPicModel {
    public void headPic(File image, final HeadPicCallBack headPicCallBack){
        int userId = SpUtil.getInt(\"userId\", -1);
        String sessionId = SpUtil.getString(\"sessionId\", \"\");
        RetrofitService retrofitService = RetrofitApi.getInstance().creatApi(RetrofitService.class);
        //设置Content-Type:multipart/form-data
        RequestBody requestFile =RequestBody.create(MediaType.parse(\"multipart/form-data\"), image);
        //设置Content-Disposition:form-data; name=\"photo\"; filename=\"xuezhiqian.png\"
        MultipartBody.Part body = MultipartBody.Part.createFormData(\"image\", image.getName(), requestFile);
    Observable<HeadPicBean> headPicBeanObservable = retrofitService.headPic(body, userId, sessionId);

    headPicBeanObservable.subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<HeadPicBean>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void  (Throwable e) {
                    e.printStackTrace();
                    headPicCallBack.onHeadPicCallBackFailure(e.getMessage());
                }

                @Override
                public void onNext(HeadPicBean headPicBean) {
                    headPicCallBack.onHeadPicCallBackSuccess(headPicBean);
                }
            });
 }
}

Presenter

package com.jia.dimensions_of_electricity.mine.myprofile.headpic;

import java.io.File;

public class HeadPicPresenter {
    private HeadPicView headPicView;
    private final HeadPicModel headPicModel;
public HeadPicPresenter(HeadPicView headPicView) {
    this.headPicView = headPicView;
    headPicModel = new HeadPicModel();
}
public void headPic(File image){
    headPicModel.headPic(image, new HeadPicCallBack() {
        @Override
        public void onHeadPicCallBackSuccess(HeadPicBean headPicBean) {
            headPicView.onHeadPicViewSuccess(headPicBean);
        }

        @Override
        public void onHeadPicCallBackFailure(String msg) {

            headPicView.onHeadPicViewFailure(msg);
        }
    });
}
}

Bean

package com.jia.dimensions_of_electricity.mine.myprofile.headpic;

public class HeadPicBean {
/**
 * headPath : http://172.17.8.100/images/small/head_pic/2018-12-14/20181214160215.jpg
 * message : 上传成功
 * status : 0000
 */

private String headPath;
private String message;
private String status;

public String getHeadPath() {
    return headPath;
}

public void setHeadPath(String headPath) {
    this.headPath = headPath;
}

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}
}

Activity

package com.jia.dimensions_of_electricity.mine.myprofile;

import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.facebook.drawee.view.SimpleDraweeView;
import com.jia.dimensions_of_electricity.App;
import com.jia.dimensions_of_electricity.R;
import com.jia.dimensions_of_electricity.mine.myprofile.headpic.HeadPicBean;
import com.jia.dimensions_of_electricity.mine.myprofile.headpic.HeadPicPresenter;
import com.jia.dimensions_of_electricity.mine.myprofile.headpic.HeadPicView;
import com.jia.dimensions_of_electricity.mine.myprofile.userInformation.UserInformationBean;
import com.jia.dimensions_of_electricity.mine.myprofile.userInformation.UserInformationPresenter;
import com.jia.dimensions_of_electricity.mine.myprofile.userInformation.UserInformationView;
import com.jia.dimensions_of_electricity.mine.myprofile.usernick.UserNickActivity;
import com.jia.dimensions_of_electricity.mine.myprofile.userpwd.EventBean;
import com.jia.dimensions_of_electricity.mine.myprofile.userpwd.UserPwdActivity;
import com.jia.dimensions_of_electricity.util.Constant;
import com.jia.dimensions_of_electricity.util.ImageUtil;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

import java.io.File;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife. ;

public class MyProfileActivity extends AppCompatActivity implements HeadPicView, UserInformationView {
@BindView(R.id.my_image)
SimpleDraweeView myImage;
@BindView(R.id.my_nickName)
TextView myNickName;
@BindView(R.id.my_pwd)
TextView myPwd;
private HeadPicPresenter headPicPresenter;
private UserInformationPresenter userInformationPresenter;
private Uri uri;
private String path;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_profile);
    ButterKnife.bind(this);
    EventBus.getDefault().register(this);
    SharedPreferences sp = App.mContext.getSharedPreferences(Constant.SP_NAME, App.mContext.MODE_PRIVATE);
    SharedPreferences sp1 = App.mContext.getSharedPreferences(\"login\", App.mContext.MODE_PRIVATE);

    String nickName = sp.getString(\"nickName\", \"\");
    String headPic = sp.getString(\"headPic\", \"\");
    String password = sp1.getString(\"pwd\", \"\");
    myImage.setImageURI(headPic);
    myNickName.setText(nickName);
    myPwd.setText(password);

    userInformationPresenter = new UserInformationPresenter(this);
    userInformationPresenter.userInformation();

}

@ ({R.id.my_image, R.id.my_nickName, R.id.my_pwd})
public void onViewClicked(View view) {
    switch (view.getId()) {
        case R.id.my_image:
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType(\"image/*\");
            startActivityForResult(intent, 2);
            break;
        case R.id.my_nickName:
            startActivity(new Intent(MyProfileActivity.this, UserNickActivity.class));
            break;
        case R.id.my_pwd:
            Intent intent1 = new Intent(MyProfileActivity.this, UserPwdActivity.class);
            startActivity(intent1);
            break;
    }
}

@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case 2:
            uri = data.getData();
            //bitmap = (Bitmap) data.getExtras().get(\"data\");
            String path = ImageUtil.getPath(this, uri);
            // myImage.setImageURI(path);
            headPicPresenter = new HeadPicPresenter(this);
            headPicPresenter.headPic(new File(path));

            break;
    }
}

@Subscribe(threadMode = ThreadMode.MAIN)
public void event(String upd_name) {
    myNickName.setText(upd_name);
}

@Subscribe(threadMode = ThreadMode.MAIN)
public void eventPwd(EventBean bean) {
    myPwd.setText(bean.getPassword());
}

@Override
protected void onDestroy() {
    super.onDestroy();
    EventBus.getDefault().unregister(this);
}

@Override
public void onHeadPicViewSuccess(HeadPicBean headPicBean) {
    String headPath = headPicBean.getHeadPath();
    myImage.setImageURI(headPath);
    EventBus.getDefault().post(headPath);
    Toast.makeText(this, \"成功\", Toast.LENGTH_SHORT).show();
}

@Override
public void onHeadPicViewFailure(String msg) {
    Toast.makeText(this, \"失败\", Toast.LENGTH_SHORT).show();
}

@Override
public void onUserInformationViewSuccess(UserInformationBean userInformationBean) {

}

@Override
public void onUserInformationViewFailure(String msg) {

}

}

收藏 打印