utils
RetrofitManager
package com.example.jingdong2.utils;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* Created by 红鼻子小黑 on 2018/11/7.
*/
public class RetrofitManager {
private Retrofit retrofit;
private static final String BASE_URL = "http://www.zhaoapi.cn/";
private static final class SINGLE_INSTANCE{
private static RetrofitManager _INSTANCE = new RetrofitManager();
}
public static RetrofitManager getInstance(){
return SINGLE_INSTANCE._INSTANCE;
}
private RetrofitManager(){
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(buildOkhttpClient())
.build();
}
private OkHttpClient buildOkhttpClient() {
return new OkHttpClient.Builder()
.readTimeout(3000, TimeUnit.MILLISECONDS)
.writeTimeout(3000,TimeUnit.MILLISECONDS)
.build();
}
public Retrofit getRetrofit(){
return retrofit;
}
public <T> T create(Class<T> clazz){
return retrofit.create(clazz);
}
}
//ILoginApi
package com.example.jingdong2.utils;
import com.example.jingdong2.bean.HomeBean;
import com.example.jingdong2.bean.LoginBean;
import com.example.jingdong2.bean.MiaoShaBean;
import com.example.jingdong2.bean.RegistBean;
import com.example.jingdong2.bean.RightBean;
import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
/**
* Created by 红鼻子小黑 on 2018/11/7.
*/
public interface ILoginApi {
@GET("user/login")
Observable<LoginBean> login(@Query("mobile") String mobile,@Query("password") String password);
@GET("product/getCatagory")
Observable<HomeBean> jgg();
@GET("home/getHome")
Observable<MiaoShaBean> miaosha();
@GET("user/reg")
Observable<RegistBean> regist(@Query("mobile") String mobile,@Query("password") String password);
@GET("product/getProductCatagory")
Observable<RightBean> right(@Query("cid") String cid);
}
<?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"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/img_sao"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_weight="1"
android:src="@drawable/sao_kind"
android:layout_margin="5dp"
/>
<android.support.v7.widget.SearchView
android:layout_width="@dimen/dp_300"
android:layout_weight="1"
android:layout_height="35dp"
android:background="@drawable/jiao"
android:layout_margin="5dp"
></android.support.v7.widget.SearchView>
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_weight="1"
android:src="@drawable/order_msg"
android:layout_margin="5dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#FFFFFDFD"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/left_rec"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></android.support.v7.widget.RecyclerView>
</LinearLayout>
<View
android:layout_width="2dp"
android:layout_height="match_parent"
android:background="#FF979797"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
>
<com.recker.flybanner.FlyBanner
android:id="@+id/fl_lb"
android:layout_width="@dimen/dp_300"
android:layout_marginLeft="5dp"
android:gravity="center"
android:layout_height="150dp"></com.recker.flybanner.FlyBanner>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/right_lnl"
android:background="#FFFFFDFD"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
</LinearLayout>
</ScrollView>
</LinearLayout>
</LinearLayout>
</LinearLayout>
//LeftAdapter
package com.example.jingdong2.adapter;
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.example.jingdong2.R;
import com.example.jingdong2.bean.HomeBean;
import java.util.List;
/**
* Created by 红鼻子小黑 on 2018/11/9.
*/
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.ViewHolder> {
public interface OnItemClickListener{
void OnItemClick(View itemview,int position);
}
private OnItemClickListener clickListener;
public void setOnItemClickListener(OnItemClickListener clickListener){
this.clickListener = clickListener;
}
private Context context;
private List<HomeBean.DataBean> list;
public LeftAdapter(Context context, List<HomeBean.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public LeftAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_left,parent,false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(LeftAdapter.ViewHolder holder, final int position) {
holder.textView.setText(list.get(position).getName());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (clickListener!=null){
clickListener.OnItemClick(view,position);
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
private TextView textView;
public ViewHolder(View itemview){
super(itemview);
textView = itemview.findViewById(R.id.txt_left);
}
}
}
rightmodle
package com.example.jingdong2.right.model;
import com.example.jingdong2.bean.RightBean;
import com.example.jingdong2.utils.ILoginApi;
import com.example.jingdong2.utils.RetrofitManager;
import io.reactivex.Observable;
/**
* Created by 红鼻子小黑 on 2018/11/9.
*/
public class RightModel {
public Observable<RightBean> right(String cid){
ILoginApi iLoginApi = RetrofitManager.getInstance().create(ILoginApi.class);
Observable<RightBean> rightBeanObservable = iLoginApi.right(cid);
return rightBeanObservable;
}
}
rightpresenter
package com.example.jingdong2.right.presenter;
import android.view.View;
import com.example.jingdong2.bean.RightBean;
import com.example.jingdong2.right.model.RightModel;
import com.example.jingdong2.right.view.RightIView;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
/**
* Created by 红鼻子小黑 on 2018/11/9.
*/
public class RightPresenter {
private RightIView iv;
private RightModel rightModel;
public void attach(RightIView iv){
this.iv = iv;
rightModel = new RightModel();
}
public void right(String cid){
rightModel.right(cid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<RightBean>() {
@Override
public void accept(RightBean rightBean) throws Exception {
iv.onSuccess(rightBean);
}
});
}
public void dettach(){
if (iv !=null){
iv = null;
}
}
}
//RightIView
package com.example.jingdong2.right.view;
import com.example.jingdong2.bean.RightBean;
/**
* Created by 红鼻子小黑 on 2018/11/9.
*/
public interface RightIView {
void onSuccess(RightBean rightBean);
void onFaild(Throwable t);
}
FL
package com.example.jingdong2.fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
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.LinearLayout;
import android.widget.TextView;
import com.example.jingdong2.R;
import com.example.jingdong2.adapter.LeftAdapter;
import com.example.jingdong2.adapter.RightAdapter;
import com.example.jingdong2.bean.HomeBean;
import com.example.jingdong2.bean.RightBean;
import com.example.jingdong2.jgg.presenter.JggPresenter;
import com.example.jingdong2.jgg.view.JggIView;
import com.example.jingdong2.right.presenter.RightPresenter;
import com.example.jingdong2.right.view.RightIView;
import com.recker.flybanner.FlyBanner;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
/**
* Created by 红鼻子小黑 on 2018/11/1.
*/
public class FlFragment extends Fragment implements JggIView,RightIView{
@BindView(R.id.left_rec)
RecyclerView leftRec;
@BindView(R.id.right_lnl)
LinearLayout rightLnl;
Unbinder unbinder;
@BindView(R.id.fl_lb)
FlyBanner flLb;
private List<String> list;
private JggPresenter jggPresenter;
private List<HomeBean.DataBean> beanleft;
private LeftAdapter leftAdapter;
private RightPresenter rightPresenter;
private List<RightBean.DataBean.ListBean> rightbean;
private RightAdapter rightAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.item_fl, container, false);
unbinder = ButterKnife.bind(this, view);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ButterKnife.bind(getActivity());
list = new ArrayList<>();
list.add("http://www.zhaoapi.cn/images/quarter/ad1.png");
list.add("http://www.zhaoapi.cn/images/quarter/ad2.png");
list.add("http://www.zhaoapi.cn/images/quarter/ad3.png");
list.add("http://www.zhaoapi.cn/images/quarter/ad4.png");
flLb.setImagesUrl(list);
//分类left
jggPresenter = new JggPresenter();
rightPresenter = new RightPresenter();
beanleft = new ArrayList<>();
rightbean = new ArrayList<>();
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(),1,GridLayoutManager.VERTICAL,false);
leftAdapter = new LeftAdapter(getActivity(),beanleft);
leftRec.setLayoutManager(layoutManager);
leftRec.setAdapter(leftAdapter);
jggPresenter.attach(this);
jggPresenter.jgg();
rightPresenter.attach(this);
leftAdapter.setOnItemClickListener(new LeftAdapter.OnItemClickListener() {
@Override
public void OnItemClick(View itemview, int position) {
HomeBean.DataBean dataBean = beanleft.get(position);
rightPresenter.right(dataBean.getCid()+"");
// "http://www.zhaoapi.cn/product/getProductCatagory?cid="+
}
});
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
@Override
public void onSuccessed(HomeBean dataBean) {
beanleft.clear();
beanleft.addAll(dataBean.getData());
leftAdapter.notifyDataSetChanged();
}
@Override
public void onSuccess(RightBean rightBean) {
if (rightBean!=null){
rightLnl.removeAllViews();
for (int i=0;i<rightBean.getData().size();i++){
TextView textView = new TextView(getActivity());
textView.setText(rightBean.getData().get(i).getName());
RecyclerView rvNextb = new RecyclerView(getActivity());
RecyclerView.LayoutManager layoutManagers = new GridLayoutManager(getActivity(),3);
rvNextb.setLayoutManager(layoutManagers);
rightAdapter = new RightAdapter(getActivity(),rightBean.getData().get(i).getList());
rvNextb.setAdapter(rightAdapter);
rightbean.clear();
rightbean.addAll(rightBean.getData().get(i).getList());
rightAdapter.notifyDataSetChanged();
rightLnl.addView(textView);
rightLnl.addView(rvNextb);
}
}
}
@Override
public void onFaild(Throwable t) {
}
@Override
public void onDestroy() {
super.onDestroy();
if (jggPresenter!=null){
jggPresenter.detach();
}
if (rightPresenter!=null){
rightPresenter.dettach();
}
}
@Override
public void onResume() {
super.onResume();
rightPresenter.right("1");
}
}