一,HomeApi
public interface HomeApi { //首页api @GET(ConstantApi.HOME_URL) Observable<HomeBean> home(); }
二,HomeModel
public class HomeModel { //轮播图,秒杀,推荐 public Observable<HomeBean> home(){ return RetrofitManager.getDefault().creat(HomeApi.class).home(); } }
三,HomePresenter
public class HomePresenter extends BasePresenter<HomeView> { private HomeModel homeModel; public HomePresenter(HomeView view) { super(view); } public void homePresenter(){ homeModel.home() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<HomeBean>() { @Override public void onSubscribe(Disposable d) { compositeDisposable.clear(); } @Override public void onNext(HomeBean homeBean) { if("0".equals(homeBean.getCode())){ if(view!=null){ view.getSueecss(homeBean); }else{ if(view!=null){ view.getError("请求失败"); } } } } @Override public void onError(Throwable e) { if(view!=null){ view.getError(e.toString()); } } @Override public void onComplete() { } }); } @Override protected void initModel() { homeModel = new HomeModel(); } }
四,HomeFragment
public class Fragment_Home extends BaseActivity<HomePresenter> implements HomeView { private static final String TAG = "Fragment_Home===="; private List<String> images = new ArrayList<>(); private List<String> titles = new ArrayList<>(); private RecyclerView recyclerView_fenlei,recyclerView_miaosha,recyclerView_tuijian; private XBanner xBanner; private MyMiaoShaAdapter myMiaoShaAdapter; @Override protected void initListener() { } @Override protected void initview(View view) { xBanner = view.findViewById(R.id.home_banner); recyclerView_fenlei= view.findViewById(R.id.home_gridview); recyclerView_miaosha=view.findViewById(R.id.home_miaosha); recyclerView_tuijian=view.findViewById(R.id.home_tuijian); } @Override protected int setView() { return R.layout.home_fragment; } @Override protected void initData() { presenter.homePresenter(); } @Override protected HomePresenter presenterById() { return new HomePresenter(this); } @Override public void getSueecss(HomeBean homeBean) { Log.d(TAG, "首页轮播图成功: "+homeBean); List<HomeBean.DataBean.BannerBean> banner = homeBean.getData().getBanner(); images.clear(); titles.clear(); for (int i = 0; i <banner.size() ; i++) { String icon = banner.get(i).getIcon(); String title = banner.get(i).getTitle(); images.add(icon); titles.add(title); } //为XBanner绑定数据 xBanner.setData(R.layout.home_xbanner,images,titles); //加载广告图片 xBanner.loadImage(new XBanner.XBannerAdapter() { @Override public void loadBanner(XBanner banner, Object model, View view, int position) { SimpleDraweeView viewById = view.findViewById(R.id.my_image_view); String s = images.get(position); String[] split = s.split("\\|"); viewById.setImageURI(split[0]); } }); //京东秒杀 List<HomeBean.DataBean.MiaoshaBean.ListBean> miaosha = homeBean.getData().getMiaosha().getList(); //创建适配器 myMiaoShaAdapter = new MyMiaoShaAdapter(miaosha,getActivity()); GridLayoutManager gridLayoutManager=new GridLayoutManager(getContext(),1); gridLayoutManager.setOrientation(GridLayoutManager.HORIZONTAL); recyclerView_miaosha.setAdapter(myMiaoShaAdapter); recyclerView_miaosha.setLayoutManager(gridLayoutManager); //分类 List<HomeBean.DataBean.FenleiBean> fenlei = homeBean.getData().getFenlei(); //创建适配器 MyFenLeiAdapter myFenLeiAdapter=new MyFenLeiAdapter(getContext(),fenlei); GridLayoutManager gridLayoutManager_fenlei=new GridLayoutManager(getContext(),2); gridLayoutManager_fenlei.setOrientation(GridLayoutManager.HORIZONTAL); recyclerView_fenlei.setAdapter(myFenLeiAdapter); recyclerView_fenlei.setLayoutManager(gridLayoutManager_fenlei); //为你推荐 final List<HomeBean.DataBean.TuijianBean.ListBeanX> tuijian = homeBean.getData().getTuijian().getList(); //创建适配器 MyTuiJianAdapter myTuiJianAdapter=new MyTuiJianAdapter(getContext(),tuijian); GridLayoutManager gridLayoutManager_tuijian=new GridLayoutManager(getContext(),2); gridLayoutManager_tuijian.setOrientation(LinearLayoutManager.VERTICAL); recyclerView_tuijian.setAdapter(myTuiJianAdapter); recyclerView_tuijian.setLayoutManager(gridLayoutManager_tuijian); //点击商品跳转到商品详情页面 myTuiJianAdapter.setOnItemClickListener(new MyTuiJianAdapter.OnItemClickListener() { @Override public void OnItemClick(int position) { Intent it=new Intent(getContext(), XiangQing_Activity.class); int pid = tuijian.get(position).getPid(); it.putExtra("pid",pid+""); startActivity(it); } }); } @Override public void getError(String e) { Log.d(TAG, "首页轮播图失败: "+e); } }
五,HomeAdapter
(1)mytuijian_adapter
public class MyTuiJianAdapter extends RecyclerView.Adapter<MyTuiJianAdapter.MyViewHolder> { private Context context; private List<HomeBean.DataBean.TuijianBean.ListBeanX> list; public MyTuiJianAdapter(Context context, List<HomeBean.DataBean.TuijianBean.ListBeanX> list) { this.context = context; this.list = list; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.home_tuijian_adapter, parent, false); MyViewHolder myViewHolder=new MyViewHolder(view); return myViewHolder; } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) { holder.tv_title.setText(list.get(position).getTitle()); holder.tv_price.setText("¥"+list.get(position).getPrice()); String[] split = list.get(position).getImages().split("\\|"); holder.simpleDraweeView.setImageURI(Uri.parse(split[0])); holder.simpleDraweeView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onItemClickListener.OnItemClick(position); } }); } @Override public int getItemCount() { return list==null ?0:list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { private SimpleDraweeView simpleDraweeView; private TextView tv_title,tv_price; public MyViewHolder(View itemView) { super(itemView); simpleDraweeView=itemView.findViewById(R.id.home_tuijian_simple_adapter); tv_title=itemView.findViewById(R.id.home_tuijian_tv_title_adapter); tv_price=itemView.findViewById(R.id.home_tuijian_tv_price_adapter); } } private OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } //为条目添加监听事件 public interface OnItemClickListener{ void OnItemClick(int position); } }
(2)mymiaosha_adapter
public class MyMiaoShaAdapter extends RecyclerView.Adapter<MyMiaoShaAdapter.MyViewHolder> { private List<HomeBean.DataBean.MiaoshaBean.ListBean> list; private Context context; public MyMiaoShaAdapter(List<HomeBean.DataBean.MiaoshaBean.ListBean> list, Context context) { this.list = list; this.context = context; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.home_miaosha_adapter, parent, false); MyViewHolder myViewHolder=new MyViewHolder(view); return myViewHolder; } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { String images = list.get(position).getImages(); String[] split = images.split("\\|"); holder.simpleDraweeView.setImageURI( Uri.parse(split[0])); } @Override public int getItemCount() { return list==null? 0:list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { private SimpleDraweeView simpleDraweeView; public MyViewHolder(View itemView) { super(itemView); simpleDraweeView=itemView.findViewById(R.id.home_miaosha_adapter); } } }
(3)myfenlei_adapter
public class MyFenLeiAdapter extends RecyclerView.Adapter<MyFenLeiAdapter.MyViewHolder> { private Context context; private List<HomeBean.DataBean.FenleiBean> list; public MyFenLeiAdapter(Context context, List<HomeBean.DataBean.FenleiBean> list) { this.context = context; this.list = list; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.home_fenlei_adapter, parent, false); MyViewHolder myViewHolder=new MyViewHolder(view); return myViewHolder; } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { holder.textView.setText(list.get(position).getName()); String[] split = list.get(position).getIcon().split("\\|"); holder.simpleDraweeView.setImageURI(Uri.parse(split[0])); } @Override public int getItemCount() { return list==null? 0:list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { private SimpleDraweeView simpleDraweeView; private TextView textView; public MyViewHolder(View itemView) { super(itemView); simpleDraweeView=itemView.findViewById(R.id.home_fenlei_adapter); textView=itemView.findViewById(R.id.home_fenlei_tv_adapter); } } }