主xml activity_sort
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="40dp"> <Button android:id="@+id/btn_xin" android:background="@drawable/sao_hei" android:layout_width="35dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_gravity="center_vertical" android:layout_height="35dp" /> <EditText android:id="@+id/sort_shuru" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_centerVertical="true" android:focusable="false" android:layout_weight="1" android:text="七夕京东购物狂欢节" /> <Button android:id="@+id/btn_sao" android:background="@drawable/msg_hei" android:layout_width="35dp" android:layout_height="35dp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="match_parent"> <ListView android:id="@+id/sort_listview" android:layout_width="120dp" android:layout_height="match_parent"></ListView> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="1" > <ImageView android:layout_width="match_parent" android:layout_height="108dp" android:background="@drawable/timg" /> <android.support.v7.widget.RecyclerView android:id="@+id/class_recy" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView> </LinearLayout> </LinearLayout> </LinearLayout>
左边的子xml class_list_view_item
<?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"> <TextView android:id="@+id/tv_catagory_class" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="标题" android:textSize="20dp" android:padding="10dp" android:textColor="#000" android:gravity="center" /> </LinearLayout>
右边的 子xml grid_view_item
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/base01_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2222" android:textSize="30dp" /> <android.support.v7.widget.RecyclerView android:id="@+id/base01_recyler" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/base01_tv" > </android.support.v7.widget.RecyclerView> </RelativeLayout>
API
public interface JingDongApi { //轮播图 @GET("ad/getAd") Observable<AdBean> adByGet(); //商品分类接口(此接口用于首页九宫格,和底部页签分类页) @GET("product/getCatagory") Observable<ImageBean> hometypes(); @GET("product/getCatagory") Observable<CatagoryBean> clazz(); //fenlei @GET("product/getProductCatagory") Observable<ProductCatagoryBean> clazzitem(@Query("cid") int cid); //gouwuche @GET("product/getCarts") Observable<CartBean> cart(@Query("uid") int uid); //搜索 @GET("product/searchProducts") Observable<SearchBean> doSearch(@Query("keywords")String keywords,@Query("sort")int sort); //商品详情 @GET(" product/getProducts") Observable<ProductBean> doProduct(@Query("pscid")int pscid, @Query("sort")int sort); //详情 @GET("product/getProductDetail") Observable<ProductDetailsBean> product(@Query("pid")int pid); //分类详情 @GET("product/getProductDetail") Observable<XiangQingBean> xiangqing(@Query("pid")int pid); //添加购物车 @GET("product/addCart") Observable<AddCartBean> addCart(@Query("uid")int uid, @Query("pid")int pid); //删除购物车 @GET("product/deleteCart") Observable<CartRemoveBean> deleteCart(@Query("uid")int uid, @Query("pid")int pid); //登录 @GET("user/login") Observable<LoginBean> login(@Query("mobile")String mobile,@Query("password")String password); //注册 @GET("user/reg") Observable<RegBean> doReg(@Query("mobile")String mobile,@Query("password")String password); //发现 @GET() Observable<FuLiBean> mei(@Url String url); //新闻 @GET() Observable<MainBean> xin(@Url String url); //创建订单 @GET("product/createOrder") Observable<CreateOrderBean> CreateOrderNet(@Query("uid")int uid, @Query("price")double price); //查询订单 @GET("product/getOrders") Observable<QueryOrderBean> doQueryOrder(@Query("uid")int uid ,@Query("status")int status); //查询订单 @GET("product/updateOrder") Observable<UpdateBean> doUpdateOrder(@Query("uid")int uid,@Query("status")int status,@Query("orderId")int orderId); //获取默认地址 user/getDefaultAddr @GET("user/getDefaultAddr") Observable<DefaultAddressBean> DefaultAddr(@Query("uid") int uid); //常用收货地址 user/getAddrs @GET("user/getAddrs") Observable<SelectAddressBean> SelectAddress(@Query("uid") int uid); //添加常用收获地址 user/addAddr?uid=71&addr=北京市昌平区金域国际1-1-1&mobile=18612991023&name=kson @GET("user/addAddr") Observable<AddaddrBean> tianjia(@Query("uid")int uid, @Query("addr")String addr, @Query("mobile")String mobile, @Query("name")String name); //.修改常用收货地址 @GET("user/updateAddr") Observable<UpdataAddrBean> UpdateAddr(@Query("uid") int uid, @Query("addrid") int addrid, @Query("addr") String addr, @Query("mobile") String mobile, @Query("name") String name); //.设置默认地址 @GET("user/setAddr") Observable<SetAddressBean> SetAddress(@Query("uid") int uid, @Query("addrid") int addrid, @Query("status") int status); }
m 层
public class ClazzModel { //九宫格 public Observable<CatagoryBean> clazztypes(){ return RetrofitManager.getDefaule().create(JingDongApi.class).clazz(); } //条目 public Observable<ProductCatagoryBean> clazzright(int cid){ return RetrofitManager.getDefaule().create(JingDongApi.class).clazzitem(cid); } //详情 public Observable<XiangQingBean> Goods(int pid){ return RetrofitManager.getDefaule().create(JingDongApi.class).xiangqing(pid); } }
p 层
public class ClazzPersenter extends BasePresenter<ClazzView> { private ClazzModel clazzModel; public ClazzPersenter(ClazzView view) { super(view); } @Override protected void initModel() { clazzModel=new ClazzModel(); } //左边 public void clazztype(){ clazzModel.clazztypes() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<CatagoryBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(CatagoryBean catagoryBean) { if(view!=null){ view.getLeftListSuccess(catagoryBean); } } @Override public void onError(Throwable e) { if(view!=null){ view.getLeftListFaild(e.toString()); } } @Override public void onComplete() { } }); } //右边 public void clazzright(int cid){ clazzModel.clazzright(cid) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<ProductCatagoryBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(ProductCatagoryBean productCatagoryBean) { if(view!=null){ view.getRightListSuccess(productCatagoryBean); } } @Override public void onError(Throwable e) { if(view!=null){ view.getRightListFaild(e.toString()); } } @Override public void onComplete() { } }); } public void getGoods(int pid){ clazzModel.Goods(pid) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<XiangQingBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(XiangQingBean xiangQingBean) { if(view!=null){ view.getGoodsSuccess(xiangQingBean); } } @Override public void onError(Throwable e) { if(view!=null){ view.getGoodsFaild(e.toString()); } } @Override public void onComplete() { } }); } }
v 层
public interface ClazzView extends IView { //左边 void getLeftListSuccess(CatagoryBean catagoryBean); void getLeftListFaild(String error); //右边 void getRightListSuccess(ProductCatagoryBean productCatagoryBean); void getRightListFaild(String error); void getGoodsSuccess(XiangQingBean xiangQingBean); void getGoodsFaild(String error); }
左边的适配器 MyLeftListAdapter
public class MyLeftListAdapter extends BaseAdapter { private List<CatagoryBean.DataBean> list; private Context context; public MyLeftListAdapter(List<CatagoryBean.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = View.inflate(context, R.layout.class_list_view_item, null); holder = new ViewHolder(); holder.textView = convertView.findViewById(R.id.tv_catagory_class); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.textView.setText(list.get(position).getName()); return convertView; } class ViewHolder { TextView textView; } }
右边适配器 MyRightAdapter
public class MyRightAdapter extends RecyclerView.Adapter { private RecyclerView recyclerView; private List<ProductCatagoryBean.DataBean> list; private Context context; public MyRightAdapter(List<ProductCatagoryBean.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(parent.getContext(), R.layout.grid_view_item, null); return new MyHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ((MyHolder)holder).textView.setText(list.get(position).getName()); List<ProductCatagoryBean.DataBean.ListBean> list1 = this.list.get(position).getList(); MyitemAdapter myitemAdapter = new MyitemAdapter(list1); GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 3); recyclerView.setLayoutManager(gridLayoutManager); recyclerView.setAdapter(myitemAdapter); myitemAdapter.setOnClickListener(new MyitemAdapter.onClickListener() { @Override public void onClick(View view, int position) { Intent it = new Intent(context, ClssesProducts.class); int pscid = MyRightAdapter.this.list.get(position).getList().get(position).getPscid(); it.putExtra("pscid",pscid); context.startActivity(it); } }); } @Override public int getItemCount() { return list.size(); } public class MyHolder extends RecyclerView.ViewHolder{ private final TextView textView; public MyHolder(View itemView) { super(itemView); recyclerView = itemView.findViewById(R.id.base01_recyler); textView = itemView.findViewById(R.id.base01_tv); } } }
分类 Fragment
public class SortFragment extends BaseFragment<ClazzPersenter> implements ClazzView,View.OnClickListener { private RecyclerView recyclerView; private ListView listView; private EditText editText; int cid=1; private List<CatagoryBean.DataBean> list= new ArrayList<>(); @Override public Context context() { return null; } @Override public void getLeftListSuccess(CatagoryBean catagoryBean) { final List<CatagoryBean.DataBean> data = catagoryBean.getData(); list.addAll(data); //适配器 MyLeftListAdapter myLeftListAdapter = new MyLeftListAdapter(list, getContext()); listView.setAdapter(myLeftListAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { int cid = data.get(position).getCid(); presenter.clazzright(cid); } }); } @Override public void getLeftListFaild(String error) { Toast.makeText(getActivity(),"失败666",Toast.LENGTH_LONG).show(); } @Override public void getRightListSuccess(ProductCatagoryBean productCatagoryBean) { List<ProductCatagoryBean.DataBean> data = productCatagoryBean.getData(); MyRightAdapter myRightAdapter = new MyRightAdapter(data,getContext()); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); recyclerView.setLayoutManager(linearLayoutManager); recyclerView.setAdapter(myRightAdapter); } @Override public void getRightListFaild(String error) { } @Override public void getGoodsSuccess(XiangQingBean xiangQingBean) { } @Override public void getGoodsFaild(String error) { } @Override protected void initViews(View view) { listView= view.findViewById(R.id.sort_listview); recyclerView= view.findViewById(R.id.class_recy); editText=view.findViewById(R.id.sort_shuru); editText.setOnClickListener(this); } @Override protected void initData() { presenter.clazztype(); presenter.clazzright(1); } @Override protected void initListener() { } @Override protected ClazzPersenter providePresenter() { return new ClazzPersenter(this); } @Override protected int privideLayoutId() { return R.layout.activity_sort; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.sort_shuru: Intent it = new Intent(getContext(), SearchActivity.class); startActivity(it); break; } } }