api
package myjd.jd.com.imitate2jd.view.frag.sort.api;
import myjd.jd.com.imitate2jd.bean.DetailsBean;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.bean.ProductsBean;
import myjd.jd.com.imitate2jd.bean.SortBean;
import retrofit2.http.GET;
import retrofit2.http.Query;
import rx.Observable;
public interface ApiIn {
/**
* 商品分类接口
* @return
*/
@GET("product/getCatagory")
Observable<SortBean> GetCatagoryBean();
/**
* 商品子分类接口
* @param cid
* @return
*/
@GET("product/getProductCatagory")
Observable<ProductCatagoryBean> GetProductCatagoryBean(@Query("cid") int cid);
/**
* 子分类详情接口
* @param pscid
* @return
*/
@GET("product/getProducts")
Observable<ProductsBean> GetProductsBean(@Query("pscid") int pscid);
/**
* 商品详情
*/
@GET("product/getProductDetail")
Observable <DetailsBean> getdetail(@Query("pid") int pid);
}
MOdel Presenter view 接口
package myjd.jd.com.imitate2jd.view.frag.sort.contract;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.bean.SortBean;
public interface FenLeContract {
interface Model {
void GetCatagoryhttp(ModelData gData);
void GetProductCatagoryhttp(int cid, ModelData gData);
public interface ModelData{
void getData(SortBean catagoryBean);
void getData(ProductCatagoryBean productCatagoryBean);
}
}
interface View {
void GetCatagoryBean(SortBean catagoryBean);
void GetProductCatagoryBean(ProductCatagoryBean productCatagoryBean);
}
interface Presenter {
void GetCatagoryhttp();
void GetProductCatagoryhttp(int cid);
void onDestry();
}
}
Mole 层
package myjd.jd.com.imitate2jd.view.frag.sort.model;
import android.util.Log;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.bean.SortBean;
import myjd.jd.com.imitate2jd.utils.Fenzhuang;
import myjd.jd.com.imitate2jd.view.frag.sort.api.ApiIn;
import myjd.jd.com.imitate2jd.view.frag.sort.contract.FenLeContract;
import okhttp3.logging.HttpLoggingInterceptor;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class FenLeModel implements FenLeContract.Model {
@Override
public void GetCatagoryhttp(final ModelData gData) {
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
Fenzhuang.setInterceptor(httpLoggingInterceptor);
ApiIn apiInterface = Fenzhuang.createService(ApiIn.class);
apiInterface.GetCatagoryBean()
.subscribeOn(Schedulers.io())//IO线程加载数据
.observeOn(AndroidSchedulers.mainThread())//主线程显示数据
.subscribe(new Observer<SortBean>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.i("ll","1111");
}
@Override
public void onNext(SortBean catagoryBean) {
Log.i("ll","2222");
gData.getData(catagoryBean);
}
});
}
@Override
public void GetProductCatagoryhttp(int cid, final ModelData gData) {
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
Fenzhuang.setInterceptor(httpLoggingInterceptor);
ApiIn apiInterface = Fenzhuang.createService(ApiIn.class);
apiInterface.GetProductCatagoryBean(cid)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ProductCatagoryBean>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(ProductCatagoryBean productCatagoryBean) {
Log.i("ll","22223");
gData.getData(productCatagoryBean);
}
});
}
}
Presenter层
package myjd.jd.com.imitate2jd.view.frag.sort.presenter;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.bean.SortBean;
import myjd.jd.com.imitate2jd.view.frag.sort.contract.FenLeContract;
import myjd.jd.com.imitate2jd.view.frag.sort.model.FenLeModel;
import myjd.jd.com.imitate2jd.view.frag.sort.view.Fragment_Sort;
public class FenLePresenter implements FenLeContract.Presenter,FenLeContract.Model.ModelData {
private FenLeContract.View view;
private FenLeContract.Model model;
public FenLePresenter(FenLeContract.View view) {
this.view=view;
this.model=new FenLeModel();
}
@Override
public void GetCatagoryhttp() {
model.GetCatagoryhttp(this);
}
@Override
public void GetProductCatagoryhttp(int cid) {
model.GetProductCatagoryhttp(cid, this);
}
@Override
public void onDestry() {
}
@Override
public void getData(SortBean catagoryBean) {
view.GetCatagoryBean(catagoryBean);
}
@Override
public void getData(ProductCatagoryBean productCatagoryBean) {
view.GetProductCatagoryBean(productCatagoryBean);
}
}
view 层
package myjd.jd.com.imitate2jd.view.frag.sort.view;
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.TextView;
import android.widget.Toast;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import myjd.jd.com.imitate2jd.R;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.bean.SortBean;
import myjd.jd.com.imitate2jd.view.frag.sort.adapter.FenleiRightAdapter;
import myjd.jd.com.imitate2jd.view.frag.sort.adapter.MyTabAdapter;
import myjd.jd.com.imitate2jd.view.frag.sort.contract.FenLeContract;
import myjd.jd.com.imitate2jd.view.frag.sort.presenter.FenLePresenter;
import okhttp3.logging.HttpLoggingInterceptor;
import q.rorbin.verticaltablayout.VerticalTabLayout;
import q.rorbin.verticaltablayout.adapter.TabAdapter;
import q.rorbin.verticaltablayout.widget.TabView;
/**
* A simple {@link Fragment} subclass.
*/
public class Fragment_Sort extends Fragment implements FenLeContract.View{
@BindView(R.id.home_recy)
RecyclerView homeRecy;
@BindView(R.id.home_title)
TextView homeTitle;
@BindView(R.id.home_verticaltab)
VerticalTabLayout homeVerticaltab;
Unbinder unbinder;
private FenLePresenter fenLePresenter;
private FenleiRightAdapter mainRightAdapter;
public Fragment_Sort() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_fragment__sort, container, false);
unbinder = ButterKnife.bind(this, view);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
fenLePresenter = new FenLePresenter(this);
fenLePresenter.GetCatagoryhttp();
LinearLayoutManager manager = new LinearLayoutManager(getActivity());
manager.setOrientation(LinearLayoutManager.VERTICAL);
homeRecy.setLayoutManager(manager);
}
@Override
public void GetCatagoryBean(SortBean catagoryBean) {
List<SortBean.DataBean> data = catagoryBean.getData();
// Logger.e(catagoryBean.toString());
TabAdapter tabAdapter = new MyTabAdapter(data);
((MyTabAdapter) tabAdapter).setCid(new MyTabAdapter.getCid() {
@Override
public void getCid(String cid) {
int i = Integer.parseInt(cid);
fenLePresenter.GetProductCatagoryhttp(i);
}
});
homeVerticaltab.setTabAdapter(tabAdapter);
homeVerticaltab.addOnTabSelectedListener(new VerticalTabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabView tab, int position) {
if (position >6){
Toast.makeText(getActivity(),"此条目无数据",Toast.LENGTH_SHORT).show();
}else {
homeRecy.scrollToPosition(position);
}
}
@Override
public void onTabReselected(TabView tab, int position) {
}
});
}
@Override
public void GetProductCatagoryBean(ProductCatagoryBean productCatagoryBean) {
List<ProductCatagoryBean.DataBean> data = productCatagoryBean.getData();
HttpLoggingInterceptor.Logger.DEFAULT.log(productCatagoryBean.toString());
if (data.size() <= 0) {
// Toast.makeText(getActivity(),"此条目无数据",Toast.LENGTH_SHORT).show();
}else {
// Logger.e(productCatagoryBean.toString());
if (mainRightAdapter == null){
mainRightAdapter = new FenleiRightAdapter(data, getActivity());
homeRecy.setAdapter(mainRightAdapter);
}else {
mainRightAdapter.AddList(data);
}
}
}
}
adapter 适配器
MyTabAdapter
package myjd.jd.com.imitate2jd.view.frag.sort.adapter;
import java.util.List;
import myjd.jd.com.imitate2jd.bean.SortBean;
import q.rorbin.verticaltablayout.widget.ITabView;
public class MyTabAdapter implements q.rorbin.verticaltablayout.adapter.TabAdapter {
private List<SortBean.DataBean> list;
private getCid cid;
public void setCid(getCid cid) {
this.cid = cid;
}
public MyTabAdapter(List<SortBean.DataBean> list) {
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public ITabView.TabBadge getBadge(int position) {
return null;
}
@Override
public ITabView.TabIcon getIcon(int position) {
return null;
}
@Override
public ITabView.TabTitle getTitle(int position) {
ITabView.TabTitle build = new ITabView.TabTitle.Builder()
.setContent(list.get(position).getName())
.build();
cid.getCid(list.get(position).getCid() + "");
return build;
}
@Override
public int getBackground(int position) {
return 0;
}
public interface getCid {
void getCid(String cid);
}
}
FenleiRightAdapter
package myjd.jd.com.imitate2jd.view.frag.sort.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.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import myjd.jd.com.imitate2jd.R;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.customview.MyRecycle;
public class FenleiRightAdapter extends RecyclerView.Adapter{
private List<ProductCatagoryBean.DataBean> data;
private Context context;
public FenleiRightAdapter(List<ProductCatagoryBean.DataBean> data, Context context) {
this.data = data;
this.context = context;
}
public void AddList(List<ProductCatagoryBean.DataBean> li){
data.addAll(li);
notifyDataSetChanged();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View inflate = LayoutInflater.from(context).inflate(R.layout.fenlei_recy_item, parent, false);
ViewHolder viewHolder = new ViewHolder(inflate);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ViewHolder) {
ProductCatagoryBean.DataBean dataBean = data.get(position);
String name = dataBean.getName();
List<ProductCatagoryBean.DataBean.ListBean> list = dataBean.getList();
((ViewHolder) holder).mainRecyItemTite.setText(name);
GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 3);
((ViewHolder) holder).mainRecyItemRecy.setLayoutManager(gridLayoutManager);
FenleiRight_itemAdapter mainRight_itemAdapter = new FenleiRight_itemAdapter(list, context);
((ViewHolder) holder).mainRecyItemRecy.setAdapter(mainRight_itemAdapter);
}
}
@Override
public int getItemCount() {
return data.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.main_recy_item_recy)
MyRecycle mainRecyItemRecy;
@BindView(R.id.main_recy_item_tite)
TextView mainRecyItemTite;
ViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
}
FenleiRight_itemAdapter
package myjd.jd.com.imitate2jd.view.frag.sort.adapter;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.facebook.drawee.view.SimpleDraweeView;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import myjd.jd.com.imitate2jd.R;
import myjd.jd.com.imitate2jd.bean.ProductCatagoryBean;
import myjd.jd.com.imitate2jd.view.frag.sort.view.GoodsActivity;
public class FenleiRight_itemAdapter extends RecyclerView.Adapter {
private List<ProductCatagoryBean.DataBean.ListBean> list;
private Context context;
public FenleiRight_itemAdapter(List<ProductCatagoryBean.DataBean.ListBean> list, Context context) {
this.list = list;
this.context = context;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View inflate = LayoutInflater.from(context).inflate(R.layout.fenlei_recy_item_recy, parent, false);
ViewHolder viewHolder = new ViewHolder(inflate);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
if (holder instanceof ViewHolder) {
((ViewHolder) holder).mainRecyItemRecyTitle.setText(list.get(position).getName());
((ViewHolder) holder).mainRecyItemRecyImg.setImageURI(list.get(position).getIcon());
((ViewHolder) holder).view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// String pscid = list.get(position).getPscid();
// EventBus.getDefault().postSticky(pscid);
Intent intent = new Intent(context, GoodsActivity.class);
context.startActivity(intent);
}
});
}
}
@Override
public int getItemCount() {
return list.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.main_recy_item_recy_img)
SimpleDraweeView mainRecyItemRecyImg;
@BindView(R.id.main_recy_item_recy_title)
TextView mainRecyItemRecyTitle;
View view;
ViewHolder(View view) {
super(view);
this.view = view;
ButterKnife.bind(this, view);
}
}
}