//九宫格,分类 public static final String WANG_STRING = "https://www.zhaoapi.cn/product/getCatagory"; public static final String WANG_BASE = "https://www.zhaoapi.cn/"; //子分类 public static final String ZI_STRINIG = "https://www.zhaoapi.cn/product/getProductCatagory"; public static final String ZI_BASE = "https://www.zhaoapi.cn/";
//九宫格 @GET("product/getCatagory") io.reactivex.Observable<WangBean> getWang(@Query("wang")String wang); //子条目 @GET("product/getProductCatagory") io.reactivex.Observable<ZiBean> getZi(@Query("cid")int cid);
public interface FenLeiIConter { public interface FenLeiIView{ void fenleiShowData(WangBean wangBean); void fenliZiData(ZiBean ziBean); void OnError(Throwable responseString); } public interface FenLeiPresenter<FenLeiIView>{ void attachView(FenLeiIView fenLeiIView); void datachView(FenLeiIView fenLeiIView); void fenleiShowRequestData(); void fenleiZiRequestData(int cid); } public interface FenLeiModel{ public interface FenLeiListenter{ void FenLeiBack(WangBean wangBean); void onFailer(Throwable throwable); } public interface FenLeiZiListenter{ void FenLeiZiBack(ZiBean ziBean); } void fenleiShowResponse(FenLeiListenter fenLeiListenter); void fenleiZiResponse(int cid,FenLeiZiListenter fenLeiZiListenter); } }
public class FenLeiModel implements FenLeiIConter.FenLeiModel { @Override public void fenleiShowResponse(final FenLeiListenter fenLeiListenter) { Observable<WangBean> observable = Retrofitutil.getinstance().apiService(Contast.WANG_BASE).getWang(""); observable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<WangBean>() { @Override public void accept(WangBean wangBean) throws Exception { fenLeiListenter.FenLeiBack(wangBean); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { fenLeiListenter.onFailer(throwable); } }); } @SuppressLint("CheckResult") @Override public void fenleiZiResponse(int cid,final FenLeiZiListenter fenLeiZiListenter) { Observable<ZiBean> observable = Retrofitutil.getinstance().apiService(Contast.ZI_BASE).getZi(cid); observable .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<ZiBean>() { @Override public void accept(ZiBean ziBean) throws Exception { fenLeiZiListenter.FenLeiZiBack(ziBean); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { String message = throwable.getMessage(); Log.i("xxxx",message); } }); } }
public class FenLeiPresenter implements FenLeiIConter.FenLeiPresenter<FenLeiIConter.FenLeiIView> { FenLeiIConter.FenLeiIView fenLeiIView; private FenLeiModel fenLeiModel; private WeakReference<FenLeiIConter.FenLeiIView> fenLeiIViewWeakReference; private WeakReference<FenLeiModel> fenLeiModelWeakReference; @Override public void attachView(FenLeiIConter.FenLeiIView fenLeiIView) { this.fenLeiIView = fenLeiIView; fenLeiModel = new FenLeiModel(); fenLeiIViewWeakReference = new WeakReference<>(fenLeiIView); fenLeiModelWeakReference = new WeakReference<>(fenLeiModel); } @Override public void datachView(FenLeiIConter.FenLeiIView fenLeiIView) { fenLeiIViewWeakReference.clear(); fenLeiModelWeakReference.clear(); } @Override public void fenleiShowRequestData() { fenLeiModel.fenleiShowResponse(new FenLeiIConter.FenLeiModel.FenLeiListenter() { @Override public void FenLeiBack(WangBean wangBean) { fenLeiIView.fenleiShowData(wangBean); } @Override public void onFailer(Throwable throwable) { fenLeiIView.OnError(throwable); } }); } @Override public void fenleiZiRequestData(int cid) { fenLeiModel.fenleiZiResponse(cid,new FenLeiIConter.FenLeiModel.FenLeiZiListenter() { @Override public void FenLeiZiBack(ZiBean ziBean) { fenLeiIView.fenliZiData(ziBean); } }); } }
public class Fragment_two extends Fragment implements FenLeiIConter.FenLeiIView { @BindView(R.id.recyc_left) RecyclerView recycLeft; @BindView(R.id.recyc_right) RecyclerView recycRight; Unbinder unbinder; private FenLeiIConter.FenLeiPresenter fenLeiPresenter; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_two, container, false); unbinder = ButterKnife.bind(this, view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); fenLeiPresenter = new FenLeiPresenter(); fenLeiPresenter.attachView(this); fenLeiPresenter.fenleiShowRequestData(); fenLeiPresenter.fenleiZiRequestData(1); } //左recycview @Override public void fenleiShowData(final WangBean wangBean) { List<WangBean.DataBean> list = new ArrayList<>(); list.addAll(wangBean.getData()); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false); FenleiAdapter fenleiAdapter = new FenleiAdapter(getContext(),list); recycLeft.setNestedScrollingEnabled(false); //分割线 DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(getContext(),LinearLayoutManager.VERTICAL); recycLeft.addItemDecoration(dividerItemDecoration); recycLeft.setLayoutManager(linearLayoutManager); recycLeft.setAdapter(fenleiAdapter); fenleiAdapter.setOnItemClickListener(new FenleiAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { int cid = wangBean.getData().get(position).getCid(); fenLeiPresenter.fenleiZiRequestData(cid); } }); } //右recycview @Override public void fenliZiData(final ZiBean ziBean) { List<ZiBean.DataBean> list = new ArrayList<>(); list.addAll(ziBean.getData()); GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2); FenLei_item_Adapter adapter = new FenLei_item_Adapter(getContext(),list); recycRight.setNestedScrollingEnabled(false); recycRight.setLayoutManager(gridLayoutManager); recycRight.setAdapter(adapter); adapter.setOnItemClickLisentener(new FenLei_item_Adapter.onItemClickLisentener() { @Override public void onItemClick(int position) { Intent intent = new Intent(getActivity(), SouSuoActivity.class); String shangpinName = ziBean.getData().get(position).getList().get(position).getName(); intent.putExtra("shangpinName",shangpinName); startActivity(intent); } }); } @Override public void OnError(Throwable responseString) { Toast.makeText(getContext(),responseString+"",Toast.LENGTH_SHORT).show(); } @Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); fenLeiPresenter.datachView(this); } } 分类的Adapter
public class FenleiAdapter extends RecyclerView.Adapter<FenleiAdapter.FenleiViewHolder> { Context context; List<WangBean.DataBean> list; private OnItemClickListener mOnItemClickListener; public FenleiAdapter(Context context, List<WangBean.DataBean> list) { this.context = context; this.list = list; } public interface OnItemClickListener{ void onItemClick(View view, int position); } public void setOnItemClickListener(OnItemClickListener mOnItemClickListener){ this.mOnItemClickListener = mOnItemClickListener; } @NonNull @Override public FenleiViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View view = LayoutInflater.from(context).inflate(R.layout.feilei_layout, viewGroup, false); FenleiViewHolder fenleiViewHolder = new FenleiViewHolder(view); return fenleiViewHolder; } @Override public void onBindViewHolder(@NonNull final FenleiViewHolder fenleiViewHolder, int i) { fenleiViewHolder.text_fenlei.setText(list.get(i).getName()); if(mOnItemClickListener!=null){ fenleiViewHolder.text_fenlei.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int position = fenleiViewHolder.getLayoutPosition(); mOnItemClickListener.onItemClick(fenleiViewHolder.itemView,position); } }); } } @Override public int getItemCount() { return list.size(); } static class FenleiViewHolder extends RecyclerView.ViewHolder{ private final TextView text_fenlei; public FenleiViewHolder(@NonNull View itemView) { super(itemView); text_fenlei = itemView.findViewById(R.id.text_fenlei); } } } 子条目的adapter
public class FenLei_item_Adapter extends RecyclerView.Adapter<FenLei_item_Adapter.FenleiitemViewHolder> { Context context; List<ZiBean.DataBean> list; public FenLei_item_Adapter(Context context, List<ZiBean.DataBean> list) { this.context = context; this.list = list; } onItemClickLisentener onItemClickLisentener; public void setOnItemClickLisentener(onItemClickLisentener onItemClickLisentener) { this.onItemClickLisentener = onItemClickLisentener; } //声明借口对象 public interface onItemClickLisentener{ //声明条目点击方法 void onItemClick(int position); } @NonNull @Override public FenleiitemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View view = LayoutInflater.from(context).inflate(R.layout.fenlei_item_layout, viewGroup, false); FenleiitemViewHolder fenleiitemViewHolder = new FenleiitemViewHolder(view); return fenleiitemViewHolder; } @Override public void onBindViewHolder(@NonNull FenleiitemViewHolder fenleiitemViewHolder, int i) { String images = list.get(i).getList().get(i).getIcon(); if(images.contains("|")){ String s = images.substring(0, images.indexOf("|")); Uri uri = Uri.parse(s); fenleiitemViewHolder.sim_item_image.setImageURI(s); }else{ Uri uri = Uri.parse(images); fenleiitemViewHolder.sim_item_image.setImageURI(uri); } fenleiitemViewHolder.text_item_view.setText(list.get(i).getList().get(i).getName()); } @Override public int getItemCount() { return list.size(); } class FenleiitemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private final SimpleDraweeView sim_item_image; private final TextView text_item_view; public FenleiitemViewHolder(@NonNull View itemView) { super(itemView); sim_item_image = itemView.findViewById(R.id.sim_item_image); text_item_view = itemView.findViewById(R.id.text_item_view); itemView.setOnClickListener(this); } @Override public void onClick(View view) { int position = getLayoutPosition(); onItemClickLisentener.onItemClick(position); } } }