使用Retrofit和fresco、Butterknife绑定控件

使用的依赖和权限

implementation 'com.facebook.fresco:fresco:1.9.0'
//添加retrofit依赖
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
//添加gson转换器的依赖
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
//RXJava的依赖
implementation 'io.reactivex.rxjava2:rxjava:2.1.10'
//RXJava安卓的依赖
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
//注意 rxjava2是2.0的 不加2表示的是1.0
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-7'
implementation 'com.android.support:design:27.1.1'
implementation 'com.jakewharton:butterknife-compiler:8.8.1'
implementation 'com.jakewharton:butterknife:8.8.1'
implementation 'com.hjm:BottomTabBar:1.1.1'
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

build.gradle

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <com.hjm.bottomtabbar.BottomTabBar
        android:id="@+id/bottom_tab_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.hjm.bottomtabbar.BottomTabBar>

</LinearLayout>

fragmentduanzi

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="@android:color/holo_blue_dark">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="段子"
            android:layout_gravity="center"
            android:textSize="24dp"
            android:textColor="@android:color/white"/>
    </LinearLayout>

    <com.scwang.smartrefresh.layout.SmartRefreshLayout
        android:id="@+id/smart_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <android.support.v7.widget.RecyclerView
                    android:id="@+id/recycler_view"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
                </android.support.v7.widget.RecyclerView>

            </LinearLayout>
        </ScrollView>
    </com.scwang.smartrefresh.layout.SmartRefreshLayout>

</LinearLayout>

duanzi_item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <com.facebook.drawee.view.SimpleDraweeView
            android:background="@drawable/icon_failure"
            android:id="@+id/simple_view"
            android:layout_width="100dp"
            android:layout_height="100dp"
            fresco:backgroundImage="@drawable/icon_failure"
            fresco:roundAsCircle="true" />

        <LinearLayout
            android:layout_margin="6dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/tv_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView
                android:id="@+id/tv_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </LinearLayout>

    <TextView
        android:id="@+id/tv_neirong"
        android:layout_margin="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/simp_datu"
        android:background="@drawable/icon_failure"
        android:layout_width="500dp"
        fresco:backgroundImage="@drawable/icon_failure"
        android:layout_height="150dp" />

</LinearLayout>

fragmentfaixian

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:text="发现"
        android:textSize="20dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

fragmentshiping

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:text="视频"
        android:textSize="20dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

fragmentttuijian

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:text="推荐"
        android:textSize="20dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

drawable文件夹下check_selector

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/holo_red_dark"
        android:state_checked="true"></item>

    <item android:drawable="@android:color/white"
        android:state_checked="false"></item>

    <item android:drawable="@android:color/white"></item>
</selector>

MainActivity

import android.graphics.Color;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.RadioGroup;

import com.bwie.test.fragment.FragmentDuanZi;
import com.bwie.test.fragment.FragmentFaiXian;
import com.bwie.test.fragment.FragmentShiPin;
import com.bwie.test.fragment.FragmentTuiJIan;
import com.hjm.bottomtabbar.BottomTabBar;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {
    private BottomTabBar bottomTabBar;
    @BindView(R.id.radio)
    RadioGroup radio;
    private FragmentTuiJIan fragmentTuiJIan;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bottomTabBar = findViewById(R.id.bottom_tab_bar);
        //初始化Fragment
        bottomTabBar.init(getSupportFragmentManager())
                .setImgSize(50, 50)      //图片大小
                .setFontSize(12)                       //字体大小
                .setTabPadding(4, 6, 10)//选项卡的间距
                .setChangeColor(Color.RED, Color.BLUE)     //选项卡的选择颜色
                .addTabItem("首页", R.drawable.x_sy_b, FragmentTuiJIan.class)
                .addTabItem("分类", R.drawable.x_dz_b, FragmentDuanZi.class)
                .addTabItem("发现", R.drawable.x_sp_b, FragmentFaiXian.class)
                .addTabItem("我的", R.drawable.x_wd_b, FragmentShiPin.class)
                .isShowDivider(true)    //是否包含分割线
                .setOnTabChangeListener(new BottomTabBar.OnTabChangeListener() {
                    @Override
                    public void onTabChange(int position, String name) {
                        Log.i("TGA", "位置:" + position + "      选项卡:" + name);
                    }
                });
    }
}

app文件夹下MyApp

import android.app.Application;
import com.facebook.drawee.backends.pipeline.Fresco;

public class MyApplication extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

inter_view文件夹下IDuanZiFragment

import com.bwie.test.bean.JokesBean;

public interface IDuanZiFragment {
    void onSuccess(JokesBean JokesBean);
    void onError(Throwable throwable);
}

adapter文件夹下DuanZiHolder

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;

import com.facebook.drawee.view.SimpleDraweeView;
import com.bwie.test.jinfengkai20180514.R;
import butterknife.BindView;
import butterknife.ButterKnife;

public class DuanZiHolder extends RecyclerView.ViewHolder{
    @BindView(R.id.simple_view)
    public SimpleDraweeView simple_view;
    @BindView(R.id.tv_name)
    public TextView tv_name;
    @BindView(R.id.tv_neirong)
    public  TextView tv_neirong;
    @BindView(R.id.tv_time)
    public TextView tv_time;
    @BindView(R.id.simp_datu)
    public SimpleDraweeView simp_datu;

    public DuanZiHolder(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }
}

DuanZiAdapter

import android.content.Context;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;

import com.bwie.test.adapter.holder.DuanZiHolder;
import com.bwie.test.bean.JokesBean;
import com.bwie.test.jinfengkai20180514.R;

import java.util.List;

public class DuanZiAdapter extends RecyclerView.Adapter<DuanZiHolder>{
    private Context context;
    private List<JokesBean.DataBean> data;

    public DuanZiAdapter(Context context, List<JokesBean.DataBean> data) {
        this.context = context;
        this.data = data;
    }

    @NonNull
    @Override
    public DuanZiHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.duanzi_item,null);
        DuanZiHolder holder = new DuanZiHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull DuanZiHolder holder, int position) {
        holder.tv_neirong.setText(data.get(position).getContent());
        holder.tv_time.setText(data.get(position).getCreateTime());
        holder.tv_name.setText(data.get(position).getUser().getNickname());

        Object icon = data.get(position).getUser().getIcon();
        Uri uri = Uri.parse(String.valueOf(icon));
        holder.simple_view.setImageURI(uri);
        Uri uri1 = Uri.parse(String.valueOf(data.get(position).getImgUrls()));
        holder.simp_datu.setImageURI(uri1);
    }

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

model文件夹下BaseModel

import java.util.Map;

public interface BaseModel {
    void getDataFromNet(String url, Map<String, String> map);
    void unsubcribe();
}

DuanziFragmentModel

import com.bwie.test.bean.JokesBean;
import com.bwie.test.presenter.IDuanZiPresenter;
import com.bwie.test.utils.RestoUtils;

import java.util.Map;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

public class DuanziFragmentModel implements BaseModel{
    private IDuanZiPresenter prensenterInter;
    private Disposable d;

    public DuanziFragmentModel(IDuanZiPresenter prensenterInter) {
        this.prensenterInter = prensenterInter;
    }

    @Override
    public void getDataFromNet(String url, Map<String, String> map) {
        RestoUtils.getService().doPost(url,map)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<JokesBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        DuanziFragmentModel.this.d = d;
                    }

                    @Override
                    public void onNext(JokesBean jokesBean) {
                        //回传数据
                        prensenterInter.onSuccess(jokesBean);
                    }

                    @Override
                    public void onError(Throwable e) {
                        prensenterInter.onError(e);
                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }

    @Override
    public void unsubcribe() {
        d.dispose();
    }
}

presenter文件夹下BasePresenter

import java.lang.ref.Reference;
import java.lang.ref.WeakReference;

public abstract class BasePresenter<T> {
    protected Reference<T> mViewRef;//View接口类型弱引用

    public void attachView(T view) {
        mViewRef = new WeakReference<>(view); //建立关联
    }

    protected T getView() {
        return mViewRef.get();//获取View
    }

    public boolean isViewAttached() {//判断是否与View建立了关联
        return mViewRef != null && mViewRef.get() != null;
    }

    public void detachView() {//解除关联
        if (mViewRef != null) {
            mViewRef.clear();
            mViewRef = null;
        }
    }
}

DuanziPresenter

package com.bwie.test.presenter;

import com.bwie.test.bean.JokesBean;
import com.bwie.test.jinfengkai20180514.inter.IDuanZiFragment;
import com.bwie.test.model.DuanziFragmentModel;

import java.util.Map;

public class DuanziPresenter extends BasePresenter implements IDuanZiPresenter{
    private DuanziFragmentModel duanziFragmentModel;
    private IDuanZiFragment iDuanZiFragment;

    public DuanziPresenter(IDuanZiFragment iDuanZiFragment) {
        this.iDuanZiFragment = iDuanZiFragment;
        duanziFragmentModel = new DuanziFragmentModel(this);
    }

    @Override
    public void getDataFromNet(String url, Map<String, String> map) {
        duanziFragmentModel.getDataFromNet(url, map);
    }

    @Override
    public void unsubcribe() {
        duanziFragmentModel.unsubcribe();
    }

    @Override
    public void onSuccess(JokesBean JokesBean) {
        iDuanZiFragment.onSuccess(JokesBean);
    }

    @Override
    public void onError(Throwable throwable) {
        iDuanZiFragment.onError(throwable);
    }
}

IDuanZiPresenter

import com.bwie.test.bean.JokesBean;
import java.util.Map;

public interface IDuanZiPresenter {
    void getDataFromNet(String url, Map<String, String> map);
    void unsubcribe();

    void onSuccess(JokesBean JokesBean);
    void onError(Throwable throwable);
}

fragment文件夹下FragmentDuanZi

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.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.bwie.test.adapter.DuanZiAdapter;
import com.bwie.test.bean.JokesBean;
import com.bwie.test.jinfengkai20180514.R;
import com.bwie.test.jinfengkai20180514.inter.IDuanZiFragment;
import com.bwie.test.presenter.DuanziPresenter;
import com.bwie.test.utils.Constant;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnLoadmoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import butterknife.BindView;
import butterknife.ButterKnife;

public class FragmentDuanZi extends Fragment implements IDuanZiFragment {
    @BindView(R.id.smart_layout)
    SmartRefreshLayout smart_layout;
    @BindView(R.id.recycler_view)
    RecyclerView recycler_view;
    private DuanziPresenter duanziFragmentP;
    List<JokesBean.DataBean> data = new ArrayList<>();
    int page = 1;
    private Map<String, String> map;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, 
                                        @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragmentduanzi,container,false);
        ButterKnife.bind(this,view);
        return view;
    }
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //创建中间者
        duanziFragmentP = new DuanziPresenter(this);
        getData();
        smart_layout.setOnLoadmoreListener(new OnLoadmoreListener() {
            @Override
            public void onLoadmore(RefreshLayout refreshlayout) {
                page++;
                duanziFragmentP.getDataFromNet(Constant.jokesUrl,map);
            }
        });
        smart_layout.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(RefreshLayout refreshlayout) {
                page=1;
                data.clear();
                duanziFragmentP.getDataFromNet(Constant.jokesUrl,map);
            }
        });
    }

    public void getData() {
        map = new HashMap<>();
        map.put("source","android");
        map.put("appVersion","101");
        map.put("page", String.valueOf(page));
        duanziFragmentP.getDataFromNet(Constant.jokesUrl,map);
    }

    @Override
    public void onSuccess(JokesBean JokesBean) {
        data= JokesBean.getData();
        Log.e("----",JokesBean.getMsg());
        //创建适配器
        DuanZiAdapter duanZiAdapter=new DuanZiAdapter(getActivity(),data);
        recycler_view.setAdapter(duanZiAdapter);
        recycler_view.setLayoutManager(new LinearLayoutManager(getActivity()));
        //停止刷新和下拉加载
        smart_layout.finishLoadmore();
        smart_layout.finishRefresh();

    }

    @Override
    public void onError(Throwable throwable) {
        Log.e("----",throwable.getMessage());
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        duanziFragmentP.unsubcribe();//解除订阅
        if (duanziFragmentP.isViewAttached()){//如果产生关联
            duanziFragmentP.detachView(); //解除关联
        }
    }
}

FragmentFaiXian

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.bwie.test.jinfengkai20180514.R;

public class FragmentFaiXian extends Fragment{

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                                @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragmentfaixian,container,false);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }
}

FragmentShiPing

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.bwie.test.jinfengkai20180514.R;

public class FragmentShiPin extends Fragment{

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                        @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragmentshiping,container, false);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }
}

FragmentTuiJian

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.bwie.test.jinfengkai20180514.R;

public class FragmentTuiJIan extends Fragment{

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                       @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragmentttuijian,container, false);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }
}

utils文件夹下ApiService

import com.bwie.test.bean.JokesBean;
import java.util.Map;

import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.QueryMap;

public interface ApiService {
    @GET("{url}")
    Observable<JokesBean> doGet(@Path(value = "url", encoded = true) String url, 
                                       @QueryMap Map<String, String> map);

    @FormUrlEncoded
    @POST("{url}")
    Observable<JokesBean> doPost(@Path(value = "url", encoded = true) String url,  
                                       @FieldMap Map<String, String> map);
}

Constant

public class Constant {
    public  static  String  baseUrl="https://www.zhaoapi.cn/";
    public  static  String  jokesUrl="quarter/getJokes";
}

RestoUtils

import android.util.Log;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

public class RestoUtils {
    private static RestoUtils restoUtils = null;
    private Retrofit retrofit;

    public RestoUtils() {
    }

    public RestoUtils(String baseUrl) {
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(new CommonParamsInterceptor())
                .connectTimeout(15, TimeUnit.SECONDS)
                .build();

        retrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
    }

    public <T> T CreateService(Class<T> service) {
        return retrofit.create(service);

    }

    /**
     * 单例模式
     * @param baseUrl
     * @return
     */
    public static RestoUtils getInstans(String baseUrl) {
        if (restoUtils == null) {
            synchronized (RestoUtils.class) {
                if (restoUtils == null) {
                    restoUtils = new RestoUtils(baseUrl);
                }
            }
        }
        return restoUtils;
    }
    public static ApiService getService(){
        return RestoUtils.getInstans(Constant.baseUrl).CreateService( ApiService.class );
    }

    /**
     * 公共参数的拦截器
     */
    private static class CommonParamsInterceptor implements Interceptor {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            String method = request.method();
            String oldUrl = request.url().toString();

            Log.e("----oldUrl", oldUrl);

            Map<String, String> map = new HashMap<>();
            map.put("source", "android");

            if ("GET".equals(method)) {
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.append(oldUrl);

                if (oldUrl.contains("?")) {
                    if (oldUrl.indexOf("?") == oldUrl.length() - 1) {

                    } else {
                        stringBuilder.append("&");
                    }
                } else {
                    stringBuilder.append("?");
                }
                for (Map.Entry<String, String> entry : map.entrySet()) {
                    stringBuilder.append(entry.getKey())
                            .append("=")
                            .append(entry.getValue())
                            .append("&");
                }
                if (stringBuilder.indexOf("&") != -1) {
                    stringBuilder.deleteCharAt(stringBuilder.lastIndexOf("&"));
                }
                String newUrl = stringBuilder.toString();
                Log.e("----newUrl", newUrl);

                request = request.newBuilder().url(newUrl).build();

            } else if ("POST".equals(method)) {
                RequestBody requestBody = request.body();
                if (requestBody instanceof FormBody) {
                    FormBody oldBody = (FormBody) requestBody;
                    FormBody.Builder builder = new FormBody.Builder();
                    for (int i = 0; i < oldBody.size(); i++) {
                        builder.add(oldBody.name(i), oldBody.value(i));
                    }
                    for (Map.Entry<String, String> entry : map.entrySet()) {

                        builder.add(entry.getKey(), entry.getValue());
                    }
                    request = request.newBuilder().url(oldUrl).post(builder.build())
                            .build();
                }
            }
            Response response = chain.proceed(request);
            return response;
        }
    }
}

bean文件夹下JokesBean

import java.util.List;

public class JokesBean {
    private String msg;
    private String code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        private Object commentNum;
        private String content;
        private String createTime;
        private Object imgUrls;
        private int jid;
        private Object praiseNum;
        private Object shareNum;
        private int uid;
        private UserBean user;

        public Object getCommentNum() {
            return commentNum;
        }

        public void setCommentNum(Object commentNum) {
            this.commentNum = commentNum;
        }

        public String getContent() {
            return content;
        }

        public void setContent(String content) {
            this.content = content;
        }

        public String getCreateTime() {
            return createTime;
        }

        public void setCreateTime(String createTime) {
            this.createTime = createTime;
        }

        public Object getImgUrls() {
            return imgUrls;
        }

        public void setImgUrls(Object imgUrls) {
            this.imgUrls = imgUrls;
        }

        public int getJid() {
            return jid;
        }

        public void setJid(int jid) {
            this.jid = jid;
        }

        public Object getPraiseNum() {
            return praiseNum;
        }

        public void setPraiseNum(Object praiseNum) {
            this.praiseNum = praiseNum;
        }

        public Object getShareNum() {
            return shareNum;
        }

        public void setShareNum(Object shareNum) {
            this.shareNum = shareNum;
        }

        public int getUid() {
            return uid;
        }

        public void setUid(int uid) {
            this.uid = uid;
        }

        public UserBean getUser() {
            return user;
        }

        public void setUser(UserBean user) {
            this.user = user;
        }

        public static class UserBean {
            private Object age;
            private String fans;
            private boolean follow;
            private Object icon;
            private String nickname;
            private String praiseNum;

            public Object getAge() {
                return age;
            }

            public void setAge(Object age) {
                this.age = age;
            }

            public String getFans() {
                return fans;
            }

            public void setFans(String fans) {
                this.fans = fans;
            }

            public boolean isFollow() {
                return follow;
            }

            public void setFollow(boolean follow) {
                this.follow = follow;
            }

            public Object getIcon() {
                return icon;
            }

            public void setIcon(Object icon) {
                this.icon = icon;
            }

            public String getNickname() {
                return nickname;
            }

            public void setNickname(String nickname) {
                this.nickname = nickname;
            }

            public String getPraiseNum() {
                return praiseNum;
            }

            public void setPraiseNum(String praiseNum) {
                this.praiseNum = praiseNum;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/gh323093/article/details/80315056