封装:
public class Httputils { public final Api api; public Httputils(){ OkHttpClient httpClient = new OkHttpClient.Builder() .addNetworkInterceptor(new LoggingInterceptor()) .build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Contant.BAST_URI) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .client(httpClient) .build(); api = retrofit.create(Api.class); } class LoggingInterceptor implements Interceptor{ @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); long time = System.nanoTime(); Response response = chain.proceed(request); long time1 = System.nanoTime(); return response; } } private static class GetHttptUtilsinfo{ private static Httputils httputils = new Httputils(); } public static Httputils gethttputils(){ return GetHttptUtilsinfo.httputils; } }
Contant:
public static final String BAST_URI = "http://www.zhaoapi.cn/";
Api:
public interface Api { //左边列表 @GET("product/getCatagory") Observable<Bean> cata(); //右边列表 @GET("product/getProductCatagory") Observable<youBean> fenzi(@Query("cid") int cid); //详情 @GET("product/getProductDetail") Observable<XiangBean> xiang(@Query("pid") String pid); //购物车 @GET("product/getCarts?uid=71") Observable<GouBean> gou(); }
分类左边的M层:
public void MainModel(final mainmodel mainmodel){ Observable<Bean> cata = Httputils.gethttputils().api.cata(); cata.observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(new Observer<Bean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(Bean bean) { List<Bean.DataBean> data = bean.getData(); mainmodel.onSluccess(data); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } public interface mainmodel{ void onSluccess(List<Bean.DataBean> data); }
分类右边边的M层:
public class FenleiModel { public void fenpresenter(int cid,final MyRightCallBak myRightCallBak){ Observable<youBean> fenzi = Httputils.gethttputils().api.fenzi(cid); fenzi.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<youBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(youBean youBean) { List<youBean.DataBean> data = youBean.getData(); myRightCallBak.onSuccess(data); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } public interface MyRightCallBak{ void onSuccess(List<youBean.DataBean> data); } }
详情的M:
public class XiangModel { public void XiangModel(String pid,final MyRight myRight){ Observable<XiangBean> xiang1 = Httputils.gethttputils().api.xiang(pid); xiang1.observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(new Observer<XiangBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(XiangBean xiangBean) { XiangBean.DataBean data = xiangBean.getData(); myRight.onSuccess(data); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } public interface MyRight{ void onSuccess(XiangBean.DataBean data); } }
购物车的M:
public class GouModel { public void GouModel(final GouwMo gouwMo){ Observable<GouBean> gou = Httputils.gethttputils().api.gou(); gou.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<GouBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(GouBean gouBean) { List<GouBean.DataBean> data = gouBean.getData(); gouwMo.onSuccess(data); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } public interface GouwMo{ void onSuccess(List<GouBean.DataBean> data); } }
分类左边的P:
public class BasePresenter<V extends IBaseView> { private V v; public void attacthView(V v){ this.v = v; } public void detachView(){ this.v = null; } public V getView(){ return v; } }
public class Presenter extends BasePresenter<IMainView> { private final MainModel model; public Presenter(){ model = new MainModel(); } public void getdataView(){ model.MainModel(new MainModel.mainmodel() { @Override public void onSluccess(List<Bean.DataBean> data) { getView().onSuccess(data); } }); } }
分类右边的p:
public class Fenpresenter extends BasePresenter<IMainView>{ private final FenleiModel fenleiModel; public Fenpresenter(){ fenleiModel = new FenleiModel(); } public void getdataView(int cid){ Log.i("www",cid+""); fenleiModel.fenpresenter(cid, new FenleiModel.MyRightCallBak() { @Override public void onSuccess(List<youBean.DataBean> data) { getView().onYSuccess(data); } }); } }
详情的P:
public class XiangPresenter extends BasePresenter<XiangView>{ private final XiangModel model; public XiangPresenter(){ model = new XiangModel(); } public void getdataView(String pid){ model.XiangModel(pid, new XiangModel.MyRight() { @Override public void onSuccess(XiangBean.DataBean data) { getView().onSuccess(data); } }); } }
购物车的P:
public class GowPresenter extends BasePresenter<GouView>{ private final GouModel model; public GowPresenter(){ model = new GouModel(); } public void getdataView(){ model.GouModel(new GouModel.GouwMo() { @Override public void onSuccess(List<GouBean.DataBean> data) { getView().onSuccess(data); } }); } }
分类左边的适配器:
private Context context; private List<Bean.DataBean> string; private OnItemClickListener onItemClickListener; public MyAdapter(Context context, List<Bean.DataBean> string) { this.context = context; this.string = string; } @NonNull @Override public MyAdapter.holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.zuo_layout, parent,false); holder holder = new holder(view); return holder; } @Override public void onBindViewHolder(@NonNull MyAdapter.holder holder, final int position) { holder.view.setText(string.get(position).getName()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onItemClickListener.onItemClick(position); } }); /*holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int cid = string.get(position).getCid(); Fenpresenter fenpresenter = new Fenpresenter(); fenpresenter. } });*/ } @Override public int getItemCount() { return string.size(); } class holder extends RecyclerView.ViewHolder { private final TextView view; public holder(View itemView) { super(itemView); view = itemView.findViewById(R.id.text_view); } } public interface OnItemClickListener{ void onItemClick(int position); } public void setOnItemClickListener(OnItemClickListener onItemClickListener){ this.onItemClickListener = onItemClickListener; }
分类右边的适配器:
private Context context; private List<youBean.DataBean> data; public YouAdapter(Context context, List<youBean.DataBean> data) { this.context = context; this.data = data; } @NonNull @Override public YouAdapter.holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.you_layout, parent,false); YouAdapter.holder holder = new YouAdapter.holder(view); return holder; } @Override public void onBindViewHolder(@NonNull YouAdapter.holder holder, final int position) { GridLayoutManager manager = new GridLayoutManager(context, 3, GridLayoutManager.VERTICAL, false); holder.rec.setLayoutManager(manager); ZiAdapter ziAdapter = new ZiAdapter(context,data); holder.rec.setAdapter(ziAdapter); holder.view.setText(data.get(position).getName()); ziAdapter.setonItemclickLinsten(new ZiAdapter.onItemclickLinsten() { @Override public void onclick(int layoutPosition) { int pcid = data.get(position).getList().get(position).getPcid(); Intent intent = new Intent(context, XiangActivity.class); intent.putExtra("pid",String.valueOf(pcid)); context.startActivity(intent); } }); } @Override public int getItemCount() { return data.size(); } class holder extends RecyclerView.ViewHolder implements View.OnClickListener { private final TextView view; private final RecyclerView rec; public holder(View itemView) { super(itemView); view = itemView.findViewById(R.id.text_name); rec = itemView.findViewById(R.id.recycler_you_zi); itemView.setOnClickListener(this); } @Override public void onClick(View v) { } }
购物车适配器:
外:
private Context context; private List<GouBean.DataBean> na; public ShopAdapter(Context context, List<GouBean.DataBean> na) { this.context = context; this.na = na; } @NonNull @Override public ShopAdapter.holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.gou_layout, parent,false); holder holder = new holder(view); return holder; } @Override public void onBindViewHolder(@NonNull final holder holder, final int position) { LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context,LinearLayoutManager.VERTICAL, false); holder.rec.setLayoutManager(linearLayoutManager); holder.tv_item_shopcart_shopname.setText(na.get(position).getSellerName()); ShopZiAdapter adapter = new ShopZiAdapter(context,na.get(position).getList()); holder.rec.setAdapter(adapter); } @Override public int getItemCount() { return na.size(); } class holder extends RecyclerView.ViewHolder { private final RecyclerView rec; CheckBox shop_checkbox; TextView tv_item_shopcart_shopname; public holder(View itemView) { super(itemView); shop_checkbox = itemView.findViewById(R.id.shop_checkbox); tv_item_shopcart_shopname = itemView.findViewById(R.id.tv_item_shopcart_shopname); rec = itemView.findViewById(R.id.recycler_view); } }
里:
private Context context; private List<GouBean.DataBean.ListBean> data; public ShopZiAdapter(Context context, List<GouBean.DataBean.ListBean> data) { this.context = context; this.data = data; } @NonNull @Override public ShopZiAdapter.holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.shopzi_layout, null); holder holder = new holder(view); return holder; } @Override public void onBindViewHolder(@NonNull final holder holder, final int position) { Uri uri = Uri.parse(data.get(position).getImages().split("\\|")[0]); holder.item_pic.setImageURI(uri); holder.item_name.setText(data.get(position).getTitle()); holder.item_price.setText(data.get(position).getPrice()+""); } @Override public int getItemCount() { return data.size(); } class holder extends RecyclerView.ViewHolder { CheckBox item_checkbox; TextView item_price, item_name, tv_item_shopcart_cloth_size; SimpleDraweeView item_pic; Button item_del; public holder(View itemView) { super(itemView); item_price = itemView.findViewById(R.id.item_price); item_name = itemView.findViewById(R.id.item_name); tv_item_shopcart_cloth_size = itemView.findViewById(R.id.tv_item_shopcart_cloth_size); item_pic = itemView.findViewById(R.id.item_pic); item_checkbox = itemView.findViewById(R.id.item_checkbox); item_del = itemView.findViewById(R.id.item_del); } } private onchanglistener onchanglistener; public interface onchanglistener{ void oncheck(int layoutPosition, boolean checked); } public void setOnchanglistener(ShopZiAdapter.onchanglistener onchanglistener) { this.onchanglistener = onchanglistener; }
分类:
@BindView(R.id.recycler_view) RecyclerView recyclerView; @BindView(R.id.recycler_you) RecyclerView recyclerYou; Unbinder unbinder; private Presenter presenter; private Fenpresenter fenpresenter; private MyAdapter adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_menu, container, false); unbinder = ButterKnife.bind(this, view); presenter = new Presenter(); fenpresenter = new Fenpresenter(); fenpresenter.attacthView(this); presenter.attacthView(this); presenter.getdataView(); return view; } @Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); } @Override public void onSuccess(final List<Bean.DataBean> string) { GridLayoutManager manager = new GridLayoutManager(getActivity(), 1, GridLayoutManager.VERTICAL, false); recyclerView.setLayoutManager(manager); adapter = new MyAdapter(getActivity(), string); recyclerView.setAdapter(adapter); adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() { @Override public void onItemClick(int position) { Toast.makeText(getActivity(), "position:" + position, Toast.LENGTH_SHORT).show(); int cid = string.get(position).getCid(); fenpresenter.getdataView(cid); } }); } @Override public void onError() { } @Override public void onYSuccess(List<youBean.DataBean> data) { GridLayoutManager manager = new GridLayoutManager(getActivity(), 1, GridLayoutManager.VERTICAL, false); recyclerYou.setLayoutManager(manager); YouAdapter youAdapter = new YouAdapter(getActivity(),data); recyclerYou.setAdapter(youAdapter); }
详情:
@BindView(R.id.sim_view_dr) SimpleDraweeView simViewDr; @BindView(R.id.text_name_view) TextView textNameView; @BindView(R.id.text_price) TextView textPrice; @BindView(R.id.jiaru) TextView jiaru; private XiangPresenter presenter; private String pid; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xiang); ButterKnife.bind(this); pid = getIntent().getStringExtra("pid"); presenter = new XiangPresenter(); presenter.attacthView(this); presenter.getdataView(this.pid); } @Override public void onSuccess(XiangBean.DataBean name) { Uri uri = Uri.parse(name.getImages().split("\\|")[0]); simViewDr.setImageURI(uri); textNameView.setText(name.getTitle()); textPrice.setText(name.getPrice() + ""); } @Override public void onError() { }
购物车:
Unbinder unbinder; @BindView(R.id.third_recyclerview) RecyclerView thirdRecyclerview; @BindView(R.id.third_allselect) CheckBox thirdAllselect; @BindView(R.id.third_totalprice) TextView thirdTotalprice; @BindView(R.id.third_totalnum) TextView thirdTotalnum; @BindView(R.id.third_submit) Button thirdSubmit; @BindView(R.id.third_pay_linear) LinearLayout thirdPayLinear; private GowPresenter gowPresenter; private ShopAdapter adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_shopping, container, false); unbinder = ButterKnife.bind(this, view); gowPresenter = new GowPresenter(); gowPresenter.attacthView(this); gowPresenter.getdataView(); return view; } @Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); } @Override public void onSuccess(List<GouBean.DataBean> na) { LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); thirdRecyclerview.setLayoutManager(linearLayoutManager); adapter = new ShopAdapter(getActivity(),na); thirdRecyclerview.setAdapter(adapter); } @Override public void onError() { }