fragment_class
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<android.support.v7.widget.RecyclerView
android:id="@+id/type_left"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="7"></android.support.v7.widget.RecyclerView>
<android.support.v7.widget.RecyclerView
android:id="@+id/type_right"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="15dp"
android:layout_weight="3"></android.support.v7.widget.RecyclerView>
</LinearLayout>
lift_item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:text="123"
android:gravity="center"
android:textSize="20sp"
android:layout_marginTop="5dp"
android:layout_height="55dp" />
</LinearLayout>
right_item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="4dp"
android:layout_height="30dp"
android:background="@color/colorAccent" />
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="20dp"
android:enabled="true"
android:text="234"
android:textSize="20sp" />
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/item_rlv"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
right_item2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/iv"
android:layout_width="60dp"
android:layout_height="60dp" />
<TextView
android:id="@+id/tv"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:gravity="center"
android:text="12" />
</LinearLayout>
FragmentClass
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 com.bwie.month01.R;
import com.bwie.month01.adapter.LeftAdapter;
import com.bwie.month01.adapter.RightAdapter;
import com.bwie.month01.bean.LeftBean;
import com.bwie.month01.bean.RightBean;
import com.bwie.month01.presenter.LeftPresenterImp;
import com.bwie.month01.presenter.RightPresenterImp;
import com.bwie.month01.view.LeftView;
import com.bwie.month01.view.RightView;
/**
* author: Wangxinrun
* Date: 2018/6/27
* Time: 14:15
*/
public class FragmentClass extends Fragment implements LeftView, RightView {
View view;
RecyclerView recyclerLeft, recyclerRight;
LeftPresenterImp leftPresenterImp;
RightPresenterImp rightPresenterImp;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = LayoutInflater.from(getContext()).inflate(R.layout.fragment_class, container, false);
initView();
return view;
}
private void initView() {
recyclerLeft = view.findViewById(R.id.type_left);
recyclerLeft.setLayoutManager(new LinearLayoutManager(getContext()));
leftPresenterImp = new LeftPresenterImp(this);
leftPresenterImp.getLeft();
recyclerRight = view.findViewById(R.id.type_right);
recyclerRight.setLayoutManager(new LinearLayoutManager(getContext()));
rightPresenterImp = new RightPresenterImp(this);
rightPresenterImp.getRight("1");
}
@Override
public void getLeft(final LeftBean leftBean) {
final LeftAdapter leftAdapter = new LeftAdapter(getContext(), leftBean.getData());
recyclerLeft.setAdapter(leftAdapter);
leftAdapter.setRecyclerViewItemOnClick(new LeftAdapter.RecyclerViewItemOnClick() {
@Override
public void recyclerViewItemOnClick(int position, View view, RecyclerView.ViewHolder holder) {
leftAdapter.setTagPosition(position);
int cid = leftBean.getData().get(position).getCid();
rightPresenterImp.getRight(cid+"");
leftAdapter.notifyDataSetChanged();
}
});
}
@Override
public void getRight(RightBean rightBean) {
RightAdapter rightAdapter = new RightAdapter(getContext(), rightBean.getData());
recyclerRight.setAdapter(rightAdapter);
rightAdapter.notifyDataSetChanged();
}
}
LeftView
public interface LeftView {
void getLeft(LeftBean leftBean);
}
RightView
public interface RightView {
void getRight(RightBean rightBean);
}
LeftBean
public class LeftBean {
/**
* msg :
* code : 0
* data : [{"cid":1,"createtime":"2017-10-10T19:41:39","icon":"http://120.27.23.105/images/category/shop.png","ishome":1,"name":"京东超市"},{"cid":2,"createtime":"2017-10-10T19:41:39","icon":"http://120.27.23.105/images/category/qqg.png","ishome":1,"name":"全球购"},{"cid":3,"createtime":"2017-10-10T19:45:11","icon":"http://120.27.23.105/images/category/phone.png","ishome":1,"name":"手机数码"},{"cid":5,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/man.png","ishome":1,"name":"男装"},{"cid":6,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/girl.png","ishome":1,"name":"女装"},{"cid":7,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/manshoe.png","ishome":1,"name":"男鞋"},{"cid":8,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/girlshoe.png","ishome":1,"name":"女鞋"},{"cid":9,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/shirt.png","ishome":1,"name":"内衣配饰"},{"cid":10,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/bag.png","ishome":1,"name":"箱包手袋"},{"cid":11,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/beauty.png","ishome":1,"name":"美妆个护"},{"cid":12,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/jewel.png","ishome":1,"name":"钟表珠宝"},{"cid":13,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/luxury.png","ishome":1,"name":"奢侈品"},{"cid":14,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/computer.png","ishome":1,"name":"电脑办公"},{"cid":15,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"家用电器"},{"cid":16,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"食品生鲜"},{"cid":17,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"酒水饮料"},{"cid":18,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"母婴童装"},{"cid":19,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"玩具乐器"},{"cid":20,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"医药保健"}]
*/
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 {
/**
* cid : 1
* createtime : 2017-10-10T19:41:39
* icon : http://120.27.23.105/images/category/shop.png
* ishome : 1
* name : 京东超市
*/
private int cid;
private String createtime;
private String icon;
private int ishome;
private String name;
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public int getIshome() {
return ishome;
}
public void setIshome(int ishome) {
this.ishome = ishome;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
RightBean
public class RightBean {
/**
* msg : 获取子分类成功
* code : 0
* data : [{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"月饼","pcid":1,"pscid":1},{"icon":"http://120.27.23.105/images/icon.png","name":"坚果炒货","pcid":1,"pscid":2},{"icon":"http://120.27.23.105/images/icon.png","name":"糖巧","pcid":1,"pscid":3},{"icon":"http://120.27.23.105/images/icon.png","name":"休闲零食","pcid":1,"pscid":4},{"icon":"http://120.27.23.105/images/icon.png","name":"肉干肉脯","pcid":1,"pscid":5},{"icon":"http://120.27.23.105/images/icon.png","name":"饼干蛋糕","pcid":1,"pscid":6},{"icon":"http://120.27.23.105/images/icon.png","name":"蜜饯果干","pcid":1,"pscid":7},{"icon":"http://120.27.23.105/images/icon.png","name":"无糖食品","pcid":1,"pscid":8}],"name":"休闲零食","pcid":"1"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"新鲜水果","pcid":2,"pscid":9},{"icon":"http://120.27.23.105/images/icon.png","name":"海鲜水产","pcid":2,"pscid":10},{"icon":"http://120.27.23.105/images/icon.png","name":"精选肉类","pcid":2,"pscid":11},{"icon":"http://120.27.23.105/images/icon.png","name":"蛋类","pcid":2,"pscid":12},{"icon":"http://120.27.23.105/images/icon.png","name":"新鲜蔬菜","pcid":2,"pscid":13},{"icon":"http://120.27.23.105/images/icon.png","name":"冷冻食品","pcid":2,"pscid":14},{"icon":"http://120.27.23.105/images/icon.png","name":"饮品甜品","pcid":2,"pscid":15},{"icon":"http://120.27.23.105/images/icon.png","name":"大闸蟹","pcid":2,"pscid":16}],"name":"京东生鲜","pcid":"2"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"大米","pcid":3,"pscid":21},{"icon":"http://120.27.23.105/images/icon.png","name":"面粉","pcid":3,"pscid":22},{"icon":"http://120.27.23.105/images/icon.png","name":"杂粮","pcid":3,"pscid":23},{"icon":"http://120.27.23.105/images/icon.png","name":"食用油","pcid":3,"pscid":24},{"icon":"http://120.27.23.105/images/icon.png","name":"调味品","pcid":3,"pscid":25},{"icon":"http://120.27.23.105/images/icon.png","name":"方便速食","pcid":3,"pscid":26},{"icon":"http://120.27.23.105/images/icon.png","name":"有机食品","pcid":3,"pscid":27}],"name":"粮油调味","pcid":"3"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"饮用水","pcid":4,"pscid":28},{"icon":"http://120.27.23.105/images/icon.png","name":"饮料","pcid":4,"pscid":29},{"icon":"http://120.27.23.105/images/icon.png","name":"牛奶乳品","pcid":4,"pscid":30},{"icon":"http://120.27.23.105/images/icon.png","name":"名茶","pcid":4,"pscid":31},{"icon":"http://120.27.23.105/images/icon.png","name":"蜂蜜","pcid":4,"pscid":32}],"name":"水饮茗茶","pcid":"4"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"白酒","pcid":5,"pscid":33},{"icon":"http://120.27.23.105/images/icon.png","name":"葡萄酒","pcid":5,"pscid":34},{"icon":"http://120.27.23.105/images/icon.png","name":"洋酒","pcid":5,"pscid":35},{"icon":"http://120.27.23.105/images/icon.png","name":"啤酒","pcid":5,"pscid":36},{"icon":"http://120.27.23.105/images/icon.png","name":"黄酒","pcid":5,"pscid":37},{"icon":"http://120.27.23.105/images/icon.png","name":"陈年老酒","pcid":5,"pscid":38}],"name":"中外名酒","pcid":"5"}]
*/
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 {
/**
* cid : 1
* list : [{"icon":"http://120.27.23.105/images/icon.png","name":"月饼","pcid":1,"pscid":1},{"icon":"http://120.27.23.105/images/icon.png","name":"坚果炒货","pcid":1,"pscid":2},{"icon":"http://120.27.23.105/images/icon.png","name":"糖巧","pcid":1,"pscid":3},{"icon":"http://120.27.23.105/images/icon.png","name":"休闲零食","pcid":1,"pscid":4},{"icon":"http://120.27.23.105/images/icon.png","name":"肉干肉脯","pcid":1,"pscid":5},{"icon":"http://120.27.23.105/images/icon.png","name":"饼干蛋糕","pcid":1,"pscid":6},{"icon":"http://120.27.23.105/images/icon.png","name":"蜜饯果干","pcid":1,"pscid":7},{"icon":"http://120.27.23.105/images/icon.png","name":"无糖食品","pcid":1,"pscid":8}]
* name : 休闲零食
* pcid : 1
*/
private String cid;
private String name;
private String pcid;
private List<ListBean> list;
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPcid() {
return pcid;
}
public void setPcid(String pcid) {
this.pcid = pcid;
}
public List<ListBean> getList() {
return list;
}
public void setList(List<ListBean> list) {
this.list = list;
}
public static class ListBean {
/**
* icon : http://120.27.23.105/images/icon.png
* name : 月饼
* pcid : 1
* pscid : 1
*/
private String icon;
private String name;
private int pcid;
private int pscid;
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPcid() {
return pcid;
}
public void setPcid(int pcid) {
this.pcid = pcid;
}
public int getPscid() {
return pscid;
}
public void setPscid(int pscid) {
this.pscid = pscid;
}
}
}
}
Api
public interface Api {
public static final String URL="https://www.zhaoapi.cn/";
}
MApp
public class MApp extends Application{
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
LeftAdapter
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bwie.month01.R;
import com.bwie.month01.bean.LeftBean;
import java.util.List;
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.VH> {
Context context;
List<LeftBean.DataBean> list;
public static int tagPosition;
public static int getTagPosition() {
return tagPosition;
}
public static void setTagPosition(int tagPosition) {
LeftAdapter.tagPosition = tagPosition;
}
public LeftAdapter(Context context, List<LeftBean.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public VH onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.left_item, parent, false);
final VH vh = new VH(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
recyclerViewItemOnClick.recyclerViewItemOnClick(vh.getAdapterPosition(), view, vh);
}
});
return vh;
}
@Override
public void onBindViewHolder(VH holder, int position) {
holder.textView.setText(list.get(position).getName());
if (position==getTagPosition()){
holder.itemView.setBackgroundResource(R.color.colorGr);
}else{
holder.itemView.setBackgroundResource(R.color.colorWhile);
}
}
@Override
public int getItemCount() {
return list.size();
}
class VH extends RecyclerView.ViewHolder {
TextView textView;
public VH(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.tv);
}
}
RecyclerViewItemOnClick recyclerViewItemOnClick;
public interface RecyclerViewItemOnClick {
void recyclerViewItemOnClick(int position, View view, RecyclerView.ViewHolder holder);
}
public void setRecyclerViewItemOnClick(RecyclerViewItemOnClick recyclerViewItemOnClick) {
this.recyclerViewItemOnClick = recyclerViewItemOnClick;
}
}
RightAdapter
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.VH> {
Context context;
List<RightBean.DataBean> list;
public RightAdapter(Context context, List<RightBean.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public VH onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.right_item, parent, false);
VH vh = new VH(view);
return vh;
}
@Override
public void onBindViewHolder(VH holder, int position) {
holder.textView.setText(list.get(position).getName());
holder.recyclerView.setLayoutManager(new GridLayoutManager(context,3));
Right2Adapter right2Adapter = new Right2Adapter(context, this.list.get(position).getList());
holder.recyclerView.setAdapter(right2Adapter);
}
@Override
public int getItemCount() {
return list.size();
}
class VH extends RecyclerView.ViewHolder {
RecyclerView recyclerView;
TextView textView;
public VH(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.tv);
recyclerView = itemView.findViewById(R.id.item_rlv);
}
}
}
Right2Adapter
import android.content.Context;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bwie.month01.R;
import com.bwie.month01.bean.RightBean;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
public class Right2Adapter extends RecyclerView.Adapter<Right2Adapter.VH> {
Context context;
List<RightBean.DataBean.ListBean> list;
public Right2Adapter(Context context, List<RightBean.DataBean.ListBean> list) {
this.context = context;
this.list = list;
}
@Override
public VH onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.right_item2, parent, false);
VH vh = new VH(view);
return vh;
}
@Override
public void onBindViewHolder(VH holder, int position) {
holder.textView.setText(list.get(position).getName());
Uri uri=Uri.parse(list.get(position).getIcon());
holder.simpleDraweeView.setImageURI(uri);
}
@Override
public int getItemCount() {
return list.size();
}
class VH extends RecyclerView.ViewHolder {
TextView textView;
SimpleDraweeView simpleDraweeView;
public VH(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.tv);
simpleDraweeView = itemView.findViewById(R.id.iv);
}
}
}
AppServer
import java.util.Map;
import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
public interface AppServer {
@GET("product/getCatagory")
Observable<LeftBean> left();
@POST("product/getProductCatagory")
@FormUrlEncoded
Observable<RightBean> right(@FieldMap Map<String, String> map);
}
LeftModelImp
import com.bwie.month01.bean.LeftBean;
import com.bwie.month01.model.inter.LeftModel;
import com.bwie.month01.utils.OnNetListener;
import com.bwie.month01.utils.RetrofitUtils;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
public class LeftModelImp implements LeftModel {
@Override
public void getLeft(final OnNetListener onNetListener) {
RetrofitUtils.getInstance().server().left()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<LeftBean>() {
@Override
public void accept(LeftBean leftBean) throws Exception {
onNetListener.onSuccess(leftBean);
}
});
}
}
RightModelImp
import com.bwie.month01.bean.RightBean;
import com.bwie.month01.model.inter.RightModel;
import com.bwie.month01.utils.OnNetListener;
import com.bwie.month01.utils.RetrofitUtils;
import java.util.HashMap;
import java.util.Map;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
public class RightModelImp implements RightModel {
@Override
public void getRight(String cid, final OnNetListener onNetListener) {
Map<String, String> map = new HashMap<>();
map.put("cid", cid);
RetrofitUtils.getInstance().server().right(map)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Consumer<RightBean>() {
@Override
public void accept(RightBean rightBean) throws Exception {
onNetListener.onSuccess(rightBean);
}
});
}
}
LeftModel
public interface LeftModel {
void getLeft(OnNetListener onNetListener);
}
RightModel
public interface RightModel {
void getRight(String cid, OnNetListener onNetListener);
}
LeftPersenterImp
public class LeftPresenterImp implements LeftPresenter {
LeftView leftView;
LeftModelImp leftModelImp;
public LeftPresenterImp(LeftView leftView) {
this.leftView = leftView;
leftModelImp = new LeftModelImp();
}
@Override
public void getLeft() {
leftModelImp.getLeft(new OnNetListener() {
@Override
public void onSuccess(Object o) {
leftView.getLeft((LeftBean) o);
}
});
}
}
RightPersenterImp
public class RightPresenterImp implements RightPresenter {
RightView rightView;
RightModelImp rightModelImp;
public RightPresenterImp(RightView rightView) {
this.rightView = rightView;
rightModelImp = new RightModelImp();
}
@Override
public void getRight(String cid) {
rightModelImp.getRight(cid, new OnNetListener() {
@Override
public void onSuccess(Object o) {
rightView.getRight((RightBean) o);
}
});
}
}
LeftPersenter
public interface LeftPresenter {
void getLeft();
}
RightPersenter
public interface RightPresenter {
void getRight(String cid);
}
OnNetListener
public interface OnNetListener<T> {
void onSuccess(T t);
}
RetrofitUtils
public class RetrofitUtils {
private static RetrofitUtils instance;
private static AppServer appServer;
private OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(20, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS)
.writeTimeout(15, TimeUnit.SECONDS)
.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.build();
private RetrofitUtils() {
Retrofit retrofit = new Retrofit.Builder()
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl(Api.URL)
.build();
appServer = retrofit.create(AppServer.class);
}
public static RetrofitUtils getInstance() {
if (instance == null) {
instance = new RetrofitUtils();
}
return instance;
}
public static AppServer server() {
return appServer;
}
}
依赖
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.squareup.okio:okio:1.5.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.facebook.fresco:fresco:0.12.0'
compile 'com.facebook.fresco:animated-gif:0.12.0'
compile 'com.jakewharton:butterknife:6.1.0'
compile 'com.squareup.retrofit2:retrofit:+'
compile 'com.squareup.retrofit2:converter-gson:+'
compile 'io.reactivex.rxjava2:rxjava:+'
compile 'io.reactivex.rxjava2:rxandroid:+'
compile 'com.squareup.retrofit2:adapter-rxjava2:+'
compile 'cn.yipianfengye.android:zxing-library:2.1'
compile 'com.sunfusheng:marqueeview:1.3.3'
compile 'com.youth.banner:banner:1.4.10'
compile 'com.zhy:autolayout:1.4.5'
权限
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bwie.month01">
<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序设置内置sd卡的写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许程序访问WiFi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序读写手机状态和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application
android:name=".app.MApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="79aca33c18d01458133ecccca48a1387">
</meta-data>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>