MianActivity
package com.example.lenovo.weektwo1109; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class MainActivity extends AppCompatActivity { @BindView(R.id.txt_first) TextView txtFirst; @BindView(R.id.txt_scot) TextView txtScot; @BindView(R.id.txt_find) TextView txtFind; @BindView(R.id.txt_cart) TextView txtCart; @BindView(R.id.txt_my) TextView txtMy; @BindView(R.id.ll_bottom) LinearLayout llBottom; @BindView(R.id.vp_fragment) FrameLayout vpFragment; private FirstFragment tf; private SortFragment sf; private FindFragment ff; private CartFragment cf; private MyFragment mf; private FragmentManager manager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); initData(); } private void initData() { manager = getSupportFragmentManager(); tf = new FirstFragment(); sf = new SortFragment(); ff = new FindFragment(); cf = new CartFragment(); mf = new MyFragment(); manager.beginTransaction() .add(R.id.vp_fragment,tf) .commit(); } @OnClick({R.id.txt_first, R.id.txt_scot, R.id.txt_find, R.id.txt_cart, R.id.txt_my}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.txt_first: manager.beginTransaction() .replace(R.id.vp_fragment,tf) .commit(); break; case R.id.txt_scot: manager.beginTransaction() .replace(R.id.vp_fragment,sf) .commit(); break; case R.id.txt_find: manager.beginTransaction() .replace(R.id.vp_fragment,ff) .commit(); break; case R.id.txt_cart: manager.beginTransaction() .replace(R.id.vp_fragment,cf) .commit(); break; case R.id.txt_my: manager.beginTransaction() .replace(R.id.vp_fragment,mf) .commit(); break; } } }
API
public interface Api { @GET("product/getCatagory") Observable<CataLeft> cataleft1(); @GET("product/getProductCatagory") Observable<CataRight> cataright1(@Query("cid") int cid); @GET("product/getProducts") Observable<DetailBean> detail1(@Query("pscid") int pscid); }
APP
public class App extends Application { @Override public void onCreate() { super.onCreate(); //初始化 Fresco.initialize(this); } }
public class ImgUtils { public static String getImg(String url){ String replace = url.replace("https","http"); String[] split = replace.split("\\|"); return split[0]; } }
RetrofitManager
package com.example.lenovo.weektwo1109.utils; import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; /** * */ public class RetrofitManager { private static final String BASE_URL = "http://www.zhaoapi.cn/"; private Retrofit retrofit; 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(5000, TimeUnit.MILLISECONDS) .writeTimeout(5000,TimeUnit.MILLISECONDS) .build(); } public Retrofit getRetrofit(){ return retrofit; } public <T> T create(Class<T> clazz){ return retrofit.create(clazz); } }
IView
public interface IView { void getCataLeft(CataLeft cataLeft); void Failed(Throwable t); void getCataRight(CataRight cataRight); void getDetail(List<DetailBean.DataBean> list); }
Model
package com.example.lenovo.weektwo1109.sort.model; import com.example.lenovo.weektwo1109.sort.bean.CataLeft; import com.example.lenovo.weektwo1109.sort.bean.CataRight; import com.example.lenovo.weektwo1109.sort.bean.DetailBean; import com.example.lenovo.weektwo1109.utils.Api; import com.example.lenovo.weektwo1109.utils.RetrofitManager; import io.reactivex.Observable; /** * */ public class SortModel { public Observable<CataLeft> cataleft(){ Api api = RetrofitManager.getInstance().create(Api.class); Observable<CataLeft> cataLeftObservable = api.cataleft1(); return cataLeftObservable; } public Observable<CataRight> cataright(int cid){ Api api = RetrofitManager.getInstance().create(Api.class); Observable<CataRight> cataRightObservable = api.cataright1(cid); return cataRightObservable; } public Observable<DetailBean> detail(int pscid){ Api api = RetrofitManager.getInstance().create(Api.class); Observable<DetailBean> detailObservable = api.detail1(pscid); return detailObservable; } }
Presenter
package com.example.lenovo.weektwo1109.sort.presenter; import com.example.lenovo.weektwo1109.sort.bean.CataLeft; import com.example.lenovo.weektwo1109.sort.bean.CataRight; import com.example.lenovo.weektwo1109.sort.bean.DetailBean; import com.example.lenovo.weektwo1109.sort.model.SortModel; import com.example.lenovo.weektwo1109.sort.view.IView; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; /** * */ public class SortPresenter { private SortModel model; private IView iv; public void attach(IView iv){ this.iv = iv; model = new SortModel(); } public void getCataLeft(){ model.cataleft() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<CataLeft>() { @Override public void accept(CataLeft cataLeft) throws Exception { if (cataLeft != null & "0".equals(cataLeft.getCode())) { if (iv != null) iv.getCataLeft(cataLeft); return; } if (iv != null) iv.Failed(new Throwable("网络未响应")); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { if ( iv != null) iv.Failed(new Throwable("网络异常")); } }); } public void getCataRight(int cid){ model.cataright(cid) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<CataRight>() { @Override public void accept(CataRight cataRight) throws Exception { if (cataRight != null & "0".equals(cataRight.getCode())) { if (iv != null) iv.getCataRight(cataRight); return; } if (iv != null) iv.Failed(new Throwable("网络未响应")); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { if ( iv != null) iv.Failed(new Throwable("网络异常")); } }); } public void getDetail(int id){ model.detail(id) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<DetailBean>() { @Override public void accept(DetailBean detailBean) throws Exception { if (detailBean != null & "0".equals(detailBean.getCode())) { if (iv != null) iv.getDetail(detailBean.getData()); return; } if (iv != null) iv.Failed(new Throwable("网络未响应")); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { if ( iv != null) iv.Failed(new Throwable("网络异常")); } }); } }
SortFragment
package com.example.lenovo.weektwo1109.fragment; import android.content.Intent; 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.example.lenovo.weektwo1109.R; import com.example.lenovo.weektwo1109.sort.adapter.LeftAdapter; import com.example.lenovo.weektwo1109.sort.adapter.MyAdapter; import com.example.lenovo.weektwo1109.sort.adapter.RightAdapter; import com.example.lenovo.weektwo1109.sort.bean.CataLeft; import com.example.lenovo.weektwo1109.sort.bean.CataRight; import com.example.lenovo.weektwo1109.sort.bean.DetailBean; import com.example.lenovo.weektwo1109.sort.presenter.SortPresenter; import com.example.lenovo.weektwo1109.sort.view.DetailActivity; import com.example.lenovo.weektwo1109.sort.view.IView; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; /** * */ public class SortFragment extends Fragment implements IView { @BindView(R.id.rv_left) RecyclerView rvLeft; @BindView(R.id.rv_right) RecyclerView rvRight; Unbinder unbinder; private List<CataLeft.DataBean> list; private List<CataRight.DataBean> catalist; private SortPresenter presenter; private LeftAdapter leftAdapter; private RightAdapter adapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_sort, container, false); unbinder = ButterKnife.bind(this, v); return v; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); presenter = new SortPresenter(); initData(); } private void initData() { presenterData(); cataleft(); cataright(); } private void presenterData() { presenter.attach(this); presenter.getCataLeft(); presenter.getCataRight(1); } private void cataright() { catalist = new ArrayList<>(); adapter = new RightAdapter(getActivity(),catalist); RecyclerView.LayoutManager rlayoutManager = new LinearLayoutManager(getActivity()); rvRight.setLayoutManager(rlayoutManager); adapter.setChildClickListener(new MyAdapter.OnChildClickListener() { @Override public void OnChildClickListener(int posotion, View v) { for (CataRight.DataBean dataBean : catalist) { int pscid = dataBean.getList().get(posotion).getPscid(); Intent intent = new Intent(getActivity(), DetailActivity.class); intent.putExtra("cid",pscid); startActivity(intent); return; } } }); rvRight.setAdapter(adapter); } private void cataleft() { list = new ArrayList<>(); //左边适配器 RecyclerView.LayoutManager layoutManager=new LinearLayoutManager(getActivity()); rvLeft.setLayoutManager(layoutManager); leftAdapter = new LeftAdapter(getActivity(),list); rvLeft.setAdapter(leftAdapter); leftAdapter.setOnItemClickListener(new LeftAdapter.OnItemClickListener() { @Override public void OnClick(View itemView, int position) { int cid = list.get(position).getCid(); presenter.getCataRight(cid); } }); } @Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); } @Override public void getCataLeft(CataLeft cataLeft) { if (cataLeft != null){ list.addAll(cataLeft.getData()); leftAdapter.notifyDataSetChanged(); } } @Override public void Failed(Throwable t) { } //右边 @Override public void getCataRight(CataRight cataRight) { if (cataRight != null){ catalist.clear(); catalist.addAll(cataRight.getData()); adapter.notifyDataSetChanged(); } } @Override public void getDetail(List<DetailBean.DataBean> list) { } }
LeftAdapter
package com.example.lenovo.weektwo1109.sort.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.lenovo.weektwo1109.R; import com.example.lenovo.weektwo1109.sort.bean.CataLeft; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by lenovo on 2018/11/9. */ public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.Holder> { //接口回调 public interface OnItemClickListener{ void OnClick(View itemView,int position); } private OnItemClickListener listener; public void setOnItemClickListener(OnItemClickListener listener){ this.listener = listener; } private Context context; private List<CataLeft.DataBean> list; public LeftAdapter(Context context, List<CataLeft.DataBean> list) { this.context = context; this.list = list; } @Override public Holder onCreateViewHolder(ViewGroup parent, int viewType) { View v = View.inflate(context, R.layout.sort_left, null); return new Holder(v); } @Override public void onBindViewHolder(Holder holder, final int position) { holder.txtTitle.setText(list.get(position).getName()); holder.txtTitle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener.OnClick(view,position); } }); } @Override public int getItemCount() { return list.size(); } class Holder extends RecyclerView.ViewHolder { @BindView(R.id.txt_title) TextView txtTitle; public Holder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } } }
RightAdapter
package com.example.lenovo.weektwo1109.sort.adapter; import android.content.Context; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import com.example.lenovo.weektwo1109.R; import com.example.lenovo.weektwo1109.sort.bean.CataRight; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by lenovo on 2018/11/10. */ public class RightAdapter extends RecyclerView.Adapter<RightAdapter.Holder> { private MyAdapter.OnChildClickListener listener; public void setChildClickListener(MyAdapter.OnChildClickListener listener){ this.listener = listener; } private Context context; private List<CataRight.DataBean> catalist; public RightAdapter(Context context, List<CataRight.DataBean> catalist) { this.context = context; this.catalist = catalist; } @Override public Holder onCreateViewHolder(ViewGroup parent, int viewType) { View v = View.inflate(context, R.layout.sort_right, null); return new Holder(v); } @Override public void onBindViewHolder(Holder holder, int position) { List<CataRight.DataBean.ListBean> lists = this.catalist.get(position).getList(); MyAdapter adapter = new MyAdapter(context,lists); GridLayoutManager layoutManager = new GridLayoutManager(context,5); holder.sortRvRight.setLayoutManager(layoutManager); if(listener!=null){ adapter.setChildClickListener(listener); } holder.sortRvRight.setAdapter(adapter); } @Override public int getItemCount() { return catalist.size(); } class Holder extends RecyclerView.ViewHolder { @BindView(R.id.sort_rv_right) RecyclerView sortRvRight; public Holder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } } }
MyAdapter
package com.example.lenovo.weektwo1109.sort.adapter; import android.content.Context; import android.net.Uri; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.lenovo.weektwo1109.R; import com.example.lenovo.weektwo1109.sort.bean.CataRight; import com.facebook.drawee.view.SimpleDraweeView; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by lenovo on 2018/11/10. */ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Holder> { //接口回调 public interface OnChildClickListener{ void OnChildClickListener(int posotion,View v); } private OnChildClickListener listener; public void setChildClickListener(OnChildClickListener listener){ this.listener=listener; } private Context context; private List<CataRight.DataBean.ListBean> lists; public MyAdapter(Context context, List<CataRight.DataBean.ListBean> lists) { this.context = context; this.lists = lists; } @Override public Holder onCreateViewHolder(ViewGroup parent, int viewType) { View v = View.inflate(context, R.layout.sort_right_child, null); return new Holder(v); } @Override public void onBindViewHolder(Holder holder, final int position) { holder.txtName.setText(lists.get(position).getName()); holder.imgLogo.setImageURI(Uri.parse(lists.get(position).getIcon())); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (listener != null){ listener.OnChildClickListener(position,view); } } }); } @Override public int getItemCount() { return lists.size(); } class Holder extends RecyclerView.ViewHolder { @BindView(R.id.img_logo) SimpleDraweeView imgLogo; @BindView(R.id.txt_name) TextView txtName; public Holder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } } }
DetaAdapter
package com.example.lenovo.weektwo1109.sort.adapter; import android.content.Context; import android.net.Uri; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.lenovo.weektwo1109.R; import com.example.lenovo.weektwo1109.sort.bean.DetailBean; import com.facebook.drawee.view.SimpleDraweeView; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by lenovo on 2018/11/11. */ public class DetailAdapter extends RecyclerView.Adapter<DetailAdapter.Holder> { private Context context; private List<DetailBean.DataBean> list; public DetailAdapter(Context context, List<DetailBean.DataBean> list) { this.context = context; this.list = list; } @Override public Holder onCreateViewHolder(ViewGroup parent, int viewType) { View v = View.inflate(context, R.layout.item_detail, null); return new Holder(v); } @Override public void onBindViewHolder(Holder holder, int position) { holder.txtTitles.setText(list.get(position).getTitle()); holder.img.setImageURI(Uri.parse(list.get(position).getImages())); } @Override public int getItemCount() { return list.size(); } class Holder extends RecyclerView.ViewHolder { @BindView(R.id.img) SimpleDraweeView img; @BindView(R.id.txt_titles) TextView txtTitles; public Holder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } } }
DETAactivity
package com.example.lenovo.weektwo1109.sort.view; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import com.example.lenovo.weektwo1109.R; import com.example.lenovo.weektwo1109.sort.adapter.DetailAdapter; import com.example.lenovo.weektwo1109.sort.bean.CataLeft; import com.example.lenovo.weektwo1109.sort.bean.CataRight; import com.example.lenovo.weektwo1109.sort.bean.DetailBean; import com.example.lenovo.weektwo1109.sort.presenter.SortPresenter; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class DetailActivity extends AppCompatActivity implements IView { @BindView(R.id.rv_detail) RecyclerView rvDetail; private SortPresenter presenter; private List<DetailBean.DataBean> list; private DetailAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().hide(); setContentView(R.layout.activity_detail); ButterKnife.bind(this); Intent intent = getIntent(); int cid = intent.getIntExtra("cid", 0); presenter = new SortPresenter(); presenter.attach(this); presenter.getDetail(cid); list = new ArrayList<>(); adapter = new DetailAdapter(this,list); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); rvDetail.setLayoutManager(layoutManager); rvDetail.setAdapter(adapter); } @Override public void getCataLeft(CataLeft cataLeft) { } @Override public void Failed(Throwable t) { } @Override public void getCataRight(CataRight cataRight) { } @Override public void getDetail(List<DetailBean.DataBean> detabeans) { if (detabeans != null){ list.clear(); list.addAll(detabeans); adapter.notifyDataSetChanged(); } } @Override protected void onDestroy() { super.onDestroy(); } }