京东分类页面

Http包

//Apiservice接口

package com.example.com.jingdongfenlei.http;
import com.example.com.jingdongfenlei.entity.LeftCategory;
import com.example.com.jingdongfenlei.entity.MessageBean;
import com.example.com.jingdongfenlei.entity.RightCategory;

import java.util.HashMap;
import java.util.List;
import io.reactivex.Flowable;
import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
/**
 * Created by 丶未央 on 2018/4/20.
 */

public interface ApiService {

    @GET("product/getCatagory")
    Observable<MessageBean<List<LeftCategory>>> getFirstCategory();

    @GET("product/getProductCatagory")
    Flowable<MessageBean<List<RightCategory>>> getSecondCategory(@Query("cid") String cid);

}
ApiService类
package com.example.com.jingdongfenlei.http;

/**
 * Created by 丶未央 on 2018/4/20.
 */

public class ServiceUrl {
    public static final String BASE_URL="https://www.zhaoapi.cn/";
}
 

//inter包

Ipresenter类

package com.example.com.jingdongfenlei.inter;

/**
 * Created by 丶未央 on 2018/4/20.
 */

public interface IPresenter<T> {
    void onReceived(T t);
    void onError(Throwable t);
}
IView类

package com.example.com.jingdongfenlei.inter;

/**
 * Created by 丶未央 on 2018/4/20.
 */

public interface IView<T> {
    void onSuccess(T t);
    void onFailed(Throwable t);
}

OnRecyclerViewItemClickListener类
public interface OnRecyclerViewItemClickListener {
    void onItemClick(int position);
}

model包

LeftModel类

package com.example.com.jingdongfenlei.model;

import android.content.Context;
import android.util.Log;

import com.example.com.jingdongfenlei.entity.LeftCategory;
import com.example.com.jingdongfenlei.entity.MessageBean;
import com.example.com.jingdongfenlei.inter.IPresenter;
import com.example.com.jingdongfenlei.utils.HttpUtils;

import java.util.List;

import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.subscribers.DisposableSubscriber;



/**
 * Created by 丶未央 on 2018/4/20.
 */

public class LeftModel {


    IPresenter presenter;
    public LeftModel( IPresenter presenter){

        this.presenter=presenter;
    }
    public void getData() {
        HttpUtils.getInstance().getService()
                .getFirstCategory()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<MessageBean<List<LeftCategory>>>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(MessageBean<List<LeftCategory>> listMessageBean) {
                        presenter.onReceived(listMessageBean);
                        Log.d("--", "onNext: "+listMessageBean.getData().size());
                    }

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

                    @Override
                    public void onComplete() {

                    }
                });

    }
}
RightModel类
package com.example.com.jingdongfenlei.model;


import android.util.Log;

import com.example.com.jingdongfenlei.entity.MessageBean;
import com.example.com.jingdongfenlei.entity.RightCategory;
import com.example.com.jingdongfenlei.inter.IPresenter;
import com.example.com.jingdongfenlei.utils.HttpUtils;

import java.util.List;

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

/**
 * Created by eric on 2018/4/18.
 */

public class RightModel {
    private IPresenter presenter;
    public RightModel(IPresenter presenter) {
        this.presenter = presenter;
    }

    public void getData(String cid) {
        HttpUtils.getInstance().getService()
                .getSecondCategory(cid)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new DisposableSubscriber<MessageBean<List<RightCategory>>>() {
                    @Override
                    public void onNext(MessageBean<List<RightCategory>> listMessageBean) {
                        Log.d("--", "onNext: "+listMessageBean.getData().size());
                        presenter.onReceived(listMessageBean);
                    }

                    @Override
                    public void onError(Throwable t) {
                        Log.d("--", "onError: "+t.getMessage());
                        presenter.onError(t);
                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }
}
 
Presenteer包

//LeftPresenter

package com.example.com.jingdongfenlei.presenter;

import com.example.com.jingdongfenlei.entity.LeftCategory;
import com.example.com.jingdongfenlei.entity.MessageBean;
import com.example.com.jingdongfenlei.inter.IPresenter;
import com.example.com.jingdongfenlei.inter.IView;
import com.example.com.jingdongfenlei.model.LeftModel;

import java.util.List;

/**
 * Created by 丶未央 on 2018/4/20.
 */

public class LeftPresenter implements IPresenter<MessageBean<List<LeftCategory>>> {
    private IView iv;

    public void attachView(IView iv) {
        this.iv = iv;
    }

    public void detachView() {
        if (iv != null) {
            iv = null;
        }
    }

    public void getData() {
        LeftModel model = new LeftModel(this);
        model.getData();
    }


    @Override
    public void onReceived(MessageBean<List<LeftCategory>> listMessageBean) {
        iv.onSuccess(listMessageBean);
    }

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

}

utils包

http类

package com.example.com.jingdongfenlei.utils;

import com.example.com.jingdongfenlei.http.ApiService;
import com.example.com.jingdongfenlei.http.ServiceUrl;

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

import static okhttp3.internal.Internal.instance;

/**
 * Created by 丶未央 on 2018/4/20.
 */

public class HttpUtils {
    private static volatile HttpUtils instance;
    private Retrofit retrofit;
    private HttpUtils(){
        //日志拦截器
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .build();

        retrofit = new Retrofit.Builder()
                .baseUrl(ServiceUrl.BASE_URL)
                //.client(client)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
    }
    public static HttpUtils getInstance() {
        if (instance == null) {
            synchronized (HttpUtils.class) {
                if (null == instance) {
                    instance = new HttpUtils();
                }
            }
        }
        return instance;
    }

    public ApiService getService() {
        return retrofit.create(ApiService.class);
    }
}
View包
LeftFragment类
package com.example.com.jingdongfenlei.view;

import android.content.Context;
import android.os.Bundle;
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.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.example.com.jingdongfenlei.R;

import com.example.com.jingdongfenlei.adapter.LeftListAdapter;
import com.example.com.jingdongfenlei.entity.LeftCategory;
import com.example.com.jingdongfenlei.entity.MessageBean;
import com.example.com.jingdongfenlei.inter.IView;
import com.example.com.jingdongfenlei.inter.OnRecyclerViewItemClickListener;
import com.example.com.jingdongfenlei.presenter.LeftPresenter;

import org.greenrobot.eventbus.EventBus;

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

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

/**
 * Created by 丶未央 on 2018/4/20.
 */

public class LeftFragment extends Fragment implements IView<MessageBean<List<LeftCategory>>> {
    private static final String TAG = "LeftFragment";
    /**
     * 左侧列表的视图
     */
    @BindView(R.id.rv_left)
    RecyclerView rvLeft;

    Unbinder unbinder;
    private Context mActivity;

    private LeftListAdapter adapter;
    private List<LeftCategory> list;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mActivity = getActivity();
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_left, null);
        unbinder = ButterKnife.bind(this, view);
        return view;
    }

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

        list = new ArrayList<>();
        adapter = new LeftListAdapter(mActivity, list);

        adapter.setListener(new OnRecyclerViewItemClickListener() {
            @Override
            public void onItemClick(int position) {
                int cid = list.get(position).getCid();
                EventBus.getDefault().post(cid+"");
            }
        });

        rvLeft.setLayoutManager(new LinearLayoutManager(mActivity));
        rvLeft.setAdapter(adapter);
        LeftPresenter presenter = new LeftPresenter();
        presenter.attachView(this);
        presenter.getData();

        //rvLeft.setAdapter(adapter);
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }

    @Override
    public void onSuccess(MessageBean<List<LeftCategory>> listMessageBean) {
        if (listMessageBean != null) {
            List<LeftCategory> data = listMessageBean.getData();
            if (data != null) {
                list.addAll(data);
                adapter.notifyDataSetChanged();
            }
        }
    }

    @Override
    public void onFailed(Throwable t) {
        Toast.makeText(mActivity, "数据获取失败:" + t.getMessage(), Toast.LENGTH_SHORT).show();
    }
 
RightFragment类
package com.example.com.jingdongfenlei.view;

import android.content.Context;
import android.os.Bundle;
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 android.widget.Toast;

import com.example.com.jingdongfenlei.R;
import com.example.com.jingdongfenlei.adapter.RightListAdapter;
import com.example.com.jingdongfenlei.entity.MessageBean;
import com.example.com.jingdongfenlei.entity.RightCategory;
import com.example.com.jingdongfenlei.inter.IView;
import com.example.com.jingdongfenlei.presenter.RightPresenter;


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

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

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

/**
 * Created by 丶未央 on 2018/4/21.
 */

public class RightFragment extends Fragment implements IView<MessageBean<List<RightCategory>>> {
    /**
     * 左侧列表的视图
     */
    @BindView(R.id.rv_right)
    RecyclerView rvRight;

    Unbinder unbinder;
    private Context mActivity;

    private RightListAdapter adapter;
    private List<RightCategory> list;
    private RightPresenter presenter;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mActivity = getActivity();
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_right, null);
        unbinder = ButterKnife.bind(this, view);
        EventBus.getDefault().register(this);
        return view;
    }

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

        list = new ArrayList<>();
        adapter = new RightListAdapter(mActivity, list);

        rvRight.setLayoutManager(new LinearLayoutManager(mActivity));
        rvRight.setAdapter(adapter);

        presenter = new RightPresenter();
        presenter.attachView(this);
        presenter.getData("1");
    }


    @Subscribe(threadMode = ThreadMode.MAIN)
    public void receiveData(String cid) {
        presenter.getData(cid);
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        EventBus.getDefault().unregister(this);
        unbinder.unbind();
    }

    @Override
    public void onSuccess(MessageBean<List<RightCategory>> listMessageBean) {
        if (listMessageBean != null) {
            List<RightCategory> data = listMessageBean.getData();
            Log.d("--", "onSuccess: "+data.size());
            if (data != null) {
                list.clear();
                list.addAll(data);

                adapter.notifyDataSetChanged();
            }
        }
    }

    @Override
    public void onFailed(Throwable t) {
        Toast.makeText(mActivity, "数据获取失败:" + t.getMessage(), Toast.LENGTH_SHORT).show();
    }
}
MainActivity类
package com.example.com.jingdongfenlei;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.FrameLayout;

public class MainActivity extends AppCompatActivity {

    /*@butterknife.BindView(R.id.fen_lei_you)
    FrameLayout fenLeiYou;
    @butterknife.BindView(R.id.fen_lei_zuo)
    FrameLayout fenLeiZuo;
*/
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        butterknife.ButterKnife.bind(this);
    }
}
adapter包
package com.example.com.jingdongfenlei.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.com.jingdongfenlei.R;
import com.example.com.jingdongfenlei.entity.LeftCategory;
import com.example.com.jingdongfenlei.inter.OnRecyclerViewItemClickListener;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
 * Created by 丶未央 on 2018/4/21.
 */

public class LeftListAdapter extends RecyclerView.Adapter<LeftListAdapter.ViewHolder> {
    private Context context;
    private List<LeftCategory> list;

    private OnRecyclerViewItemClickListener listener;

    public void setListener(OnRecyclerViewItemClickListener listener) {
        this.listener = listener;
    }

    public LeftListAdapter(Context context, List<LeftCategory> list) {
        this.context = context;
        this.list = list;
    }

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

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {
        Glide.with(context).load(list.get(position).getIcon()).into(holder.imgLogo);
        holder.txtTitle.setText(list.get(position).getName());
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onItemClick(position);
            }
        });
    }

    @Override
    public int getItemCount() {
        if (list != null) {
            return list.size();
        }
        return 0;
    }

    class ViewHolder extends RecyclerView.ViewHolder {

        @BindView(R.id.img_left_item)
        ImageView imgLogo;

        @BindView(R.id.txt_left_item)
        TextView txtTitle;

        public ViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
        }
    }
}
RightListAdapter类
package com.example.com.jingdongfenlei.adapter;

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

import com.bumptech.glide.Glide;
import com.example.com.jingdongfenlei.R;
import com.example.com.jingdongfenlei.entity.RightCategory;
import com.example.com.jingdongfenlei.entity.SecondProduct;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

/**
 * Created by 丶未央 on 2018/4/21.
 */

public class RightListAdapter extends RecyclerView.Adapter<RightListAdapter.ViewHolder> {
    private Context context;
    private List<RightCategory> list;

    public RightListAdapter(Context context, List<RightCategory> list) {
        this.context = context;
        this.list = list;
    }

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

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.txtTitle.setText(list.get(position).getName());

        SecondAdapter adapter = new SecondAdapter(context, list.get(position).getList());
        holder.rvSecond.setLayoutManager(new GridLayoutManager(context, 3));
        holder.rvSecond.setAdapter(adapter);
//        holder.rvSecond;
    }

    @Override
    public int getItemCount() {
        if (list != null) {
            return list.size();
        }
        return 0;
    }

    class ViewHolder extends RecyclerView.ViewHolder {

        @BindView(R.id.txt_right_first)
        TextView txtTitle;

        @BindView(R.id.rv_second_right)
        RecyclerView rvSecond;

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

    // 第二级的RecyclerView适配器
    class SecondAdapter extends RecyclerView.Adapter<SecondAdapter.SecondViewHolder> {
        private Context context;
        private List<RightCategory.ListBean> products;

        public SecondAdapter(Context context, List<RightCategory.ListBean> products) {
            this.context = context;
          this.products=products;
        }

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

        @Override
        public void onBindViewHolder(@NonNull SecondViewHolder holder, int position) {
            Glide.with(context).load(products.get(position).getIcon()).into(holder.imgLogo);
            holder.txtSecondTitle.setText(products.get(position).getName());
        }

        @Override
        public int getItemCount() {
            if (products != null) {
                return products.size();
            }
            return 0;
        }

        class SecondViewHolder extends RecyclerView.ViewHolder {
            @BindView(R.id.img_right_second_item)
            ImageView imgLogo;

            @BindView(R.id.txt_right_second_item)
            TextView txtSecondTitle;

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

布局

主布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    tools:context="com.example.com.jingdongfenlei.MainActivity">



    <fragment
        android:name="com.example.com.jingdongfenlei.view.LeftFragment"
        android:id="@+id/fen_lei_you"
        android:layout_width="0dp"
        android:layout_weight="3"
        android:layout_height="match_parent">
    </fragment>
        <fragment
            android:name="com.example.com.jingdongfenlei.view.RightFragment"
            android:id="@+id/fen_lei_zuo"
            android:layout_width="0dp"
            android:layout_weight="7"
            android:layout_height="match_parent">

        </fragment>



</LinearLayout>
 
fragment_left
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_left"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
</LinearLayout>
 
fragment_right
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_right"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
</LinearLayout>

item_left_list
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/img_left_item"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_gravity="center_horizontal" />

    <TextView
        android:id="@+id/txt_left_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" />
</LinearLayout>

item_right_first

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

    <TextView
        android:id="@+id/txt_right_first"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />

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

item_right_second

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/img_right_second_item"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_gravity="center_horizontal" />

    <TextView
        android:id="@+id/txt_right_second_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" />

</LinearLayout>

依赖

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:26.0.+'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    compile 'com.android.support:recyclerview-v7:26.0.+'
    compile 'com.facebook.fresco:fresco:0.12.0'

// Retrofit库
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    compile 'com.squareup.retrofit2:converter-gson:2.4.0'
    compile 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxjava:2.1.12'

// Okhttp库
    compile 'com.squareup.okhttp3:okhttp:3.1.2'

// rxjava+rxandroid+retrofit2+okhttp
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    compile 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    compile 'org.greenrobot:eventbus:3.0.0'
    compile 'com.github.bumptech.glide:glide:3.7.0'


}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值