Android retrofit+rxjava的封装

工具类

public class NetWorkManager {
    /**
     * 单例模式
     */
    private static NetWorkManager netWorkManager=new NetWorkManager();
    private Retrofit retrofit;

    private NetWorkManager(){
        init();
    }

    public static NetWorkManager getNetWorkManager() {
        synchronized (netWorkManager){
            if (netWorkManager==null){
                netWorkManager=new NetWorkManager();
            }
            return netWorkManager;
        }

    }

    private void init(){
        /**
         * 拦截器
         */
        OkHttpClient okHttpClient=new OkHttpClient.Builder()
                .addInterceptor(new HttpLoggingInterceptor())
                .connectTimeout(6,TimeUnit.SECONDS)
                .writeTimeout(10,TimeUnit.SECONDS)
                .readTimeout(6,TimeUnit.SECONDS)
                .build();

        retrofit = new Retrofit
                .Builder()
                .baseUrl(HttpConfig.base_url)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .client(okHttpClient)
                .build();


    }

    public <T> T create(final Class<T> service) {
        return retrofit.create(service);
    }

}

IRquest

public interface IRequest {
    /**
     * 登录
     * @param phone
     * @param pwd
     * @return
     */
    @POST("login")
    @FormUrlEncoded
    Observable<ILogin<Login>> getlogin(@Field("phone") String phone,@Field("pwd")String pwd);

    /**
     * 注册
     * @param phone
     * @param pwd
     * @return
     */
    @POST("register")
    @FormUrlEncoded
    Observable<ILogin<Login>> getregister(@Field("phone") String phone,@Field("pwd") String pwd);

    /**
     * 首页轮播
     * @return
     */
    @GET("commodity/v1/bannerShow")
    Observable<Result<List<Banners>>> getbanners();

    /**
     * 首页数据
     * @return
     */
    @GET("commodity/v1/commodityList")
    Observable<Result<HomeList>> gethomes();
    /**
     * 关键词查询数据
     * @return
     */
    @GET("commodity/v1/findCommodityByKeyword")
    Observable<Querys> getquery(@Query("keyword") String keyword, @Query("page") String page, @Query("count") String count);

    /**
     * 商品详情
     * @return
     */
    @GET("commodity/v1/findCommodityDetailsById")
    Observable<Details> getdetails(@Header("userId")String userId, @Header("sessionId")String sessionId,
                                   @Query("commodityId")int commodityId);
    /**
     * 圈子数据
     * @return
     */
    @GET("circle/v1/findCircleList")
    Observable<Result<List<Circle>>> getcircle(@Header("userId")long userId,
                                               @Header("sessionId")String sessionId,
                                               @Query("page")int page,
                                               @Query("count") int count);

    /**
     * 我的钱包数据
     * @return
     */
    @GET("user/verify/v1/findUserWallet")
    Observable<Result<List<Wallet>>> getwallet(@Header("userId")long userId,
                                               @Header("sessionId")String sessionId,
                                               @Query("page")int page,
                                               @Query("count") int count);


    /**
     * 购物车数据
     * @return
     */
    @GET("order/verify/v1/findShoppingCart")
    Observable<Result<List<Cart>>> getcart(@Header("userId")long userId,
                                           @Header("sessionId")String sessionId);


    /**
     * 订单数据
     * @return
     */
    @GET("order/verify/v1/findOrderListByStatus")
    Observable<Result<List<AllOrder>>> getallorder(@Header("userId")long userId,
                                                        @Header("sessionId")String sessionId,
                                                        @Query("status") int status,
                                                        @Query("page")int page,
                                                        @Query("count")int count);


    /**
     * 我的圈子数据
     * @return
     */
    @GET("circle/verify/v1/findMyCircleById")
    Observable<Result<List<MyCircle>>> getmycircle(@Header("userId")long userId,
                                                   @Header("sessionId")String sessionId,
                                                   @Query("page")int page,
                                                   @Query("count") int count);

    /**
     * 我的足迹数据
     * @return
     */
    @GET("commodity/verify/v1/browseList")
    Observable<Result<List<Foot>>> getmyfoot(@Header("userId")long userId,
                                             @Header("sessionId")String sessionId,
                                             @Query("page")int page,
                                             @Query("count") int count);





    /**
     * 我的收货地址
     * @param userId
     * @param sessionId
     * @return
     */
    @GET("user/verify/v1/receiveAddressList")
    Observable<Result<List<MyAddress>>> getmyAddress(@Header("userId") long userId,
                                                     @Header("sessionId") String sessionId);

    /**
     * 新增收货地址
     * @return
     */
    @POST("user/verify/v1/addReceiveAddress")
    @FormUrlEncoded
    Observable<AddMyAddress> getaddress(@Header("userId") long userId,
                                        @Header("sessionId") String sessionId,
                                        @Field("realName") String realName,
                                        @Field("phone") String phone,
                                        @Field("address") String address,
                                        @Field("zipCode") String zipCode);

    // 发布圈子
    @POST("circle/verify/v1/releaseCircle")
    Observable<Result> sendCircle(@Header("userId") int id,
                                  @Header("sessionId") String iaa,
                                  @Body MultipartBody multipart);

}

DataCall

public interface DataCall<T> {
    void success(T data);
    void fail(ApiException e);
}

P层

public class MoneyPresenter extends BasePresenter{
    private int page=1;
    public MoneyPresenter(DataCall dataCall) {
        super(dataCall);
    }

    @Override
    protected Observable observable(Object... args) {
        IRequest iRequest = RetrofitUtils.getInstance().create(IRequest.class);
        return iRequest.getallorder((long)args[1],(String) args[2],1,page,5);
    }
}

activity/fragment

public class AllListFragment extends WDFragment{
    @BindView(R.id.allorderfragemnt_item_RecyclerView)
    RecyclerView allorderfragemntItemRecyclerView;
    private AllListAdapter allOrderAdapter;
    private AllOrderPresenter allOrderPresenter;
    @Override
    public String getPageName() {
        return "全部订单的fragment";
    }

    @Override
    protected int getLayoutId() {
        return R.layout.fragment_all_list;
    }

    @Override
    protected void initView() {
        //新建xrecyclerview的布局
        GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 1, GridLayoutManager.VERTICAL, false);
        allorderfragemntItemRecyclerView.setLayoutManager(gridLayoutManager);
        //请求网络数据
        allOrderPresenter = new AllOrderPresenter(new AllorderCall());
        allOrderPresenter.reqeust(true,LOGIN_USER.getUserId(),LOGIN_USER.getSessionId());
        //allorderfragemntItemRecyclerView.request();
        //创建适配器
        allOrderAdapter = new AllListAdapter(getActivity());
        //设置适配器
        allorderfragemntItemRecyclerView.setAdapter(allOrderAdapter);
        //给recyclerview设置加载监听事件
    }

    class AllorderCall implements DataCall<Result<List<AllOrder>>>{
        @Override
        public void success(Result<List<AllOrder>> data) {
            if (data.getStatus().equals("0000")){
                //Toast.makeText(getActivity(), "成功获取订单", Toast.LENGTH_SHORT).show();
                allOrderAdapter.AddAll(data.getOrderList());
                allOrderAdapter.notifyDataSetChanged();
            }
        }

        @Override
        public void fail(ApiException e) {
            Toast.makeText(getActivity(), "请求失败", Toast.LENGTH_SHORT).show();
        }
    }

}

adapter1

public class AllListAdapter extends RecyclerView.Adapter<AllListAdapter.ViewHolder> {
    private Context context;
    private List<AllOrder> list;
    private ListAdapter orderAdapter;

    public AllListAdapter(Context context) {
        this.context = context;
        list = new ArrayList<>();
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.allorder_recy_item, null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
        holder.allOrderTxtSum.setText("共"+list.get(0).getDetailList().size()+"件商品,需支付"+list.get(position).getPayAmount());
        //布局管理器
        holder.allOrderRecyItem.setLayoutManager(new LinearLayoutManager(context));
        //设置子条目
        List<AllOrder.DetailListBean> detailList = list.get(0).getDetailList();
        orderAdapter = new ListAdapter(context,detailList);
        holder.allOrderRecyItem.setAdapter(orderAdapter);
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public void AddAll(List<AllOrder> orderList) {
        if (orderList!=null){
            list.addAll(orderList);
        }
    }


    public class ViewHolder extends RecyclerView.ViewHolder {

        private final RecyclerView allOrderRecyItem;
        private final TextView allOrderTxtSum;
        public ViewHolder(View itemView) {
            super(itemView);

            allOrderRecyItem = itemView.findViewById(R.id.allorder_recy_item);
            allOrderTxtSum = itemView.findViewById(R.id.allorder_txt_sum);

        }
    }
}

adapter2

public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ViewHolder> {
    private Context context;
    private List<AllOrder.DetailListBean> list;

    public ListAdapter(Context context, List<AllOrder.DetailListBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(context, R.layout.oder_recy_item, null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
        //Uri uri = Uri.parse(list.get(i).getCommodityPic());
        /**
         * 加载图片
         */
        String commodityPic = list.get(i).getCommodityPic();
        String[] split = commodityPic.split("\\,");
        viewHolder.orderSdvImage.setImageURI(split[1]);
        //viewHolder.orderSdvImage.setImageResource(R.drawable.icon);
        //Glide.with(context).load(list.get(i).getCommodityPic()).into(viewHolder.orderSdvImage);
        viewHolder.oederTxtTitle.setText(list.get(i).getCommodityName());
        viewHolder.oederTxtPrice.setText("¥:" + list.get(i).getCommodityPrice());
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private final SimpleDraweeView orderSdvImage;
        private final TextView oederTxtTitle;
        private final TextView oederTxtPrice;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            orderSdvImage = itemView.findViewById(R.id.order_sdv_image);
            oederTxtTitle = itemView.findViewById(R.id.order_txt_title);
            oederTxtPrice = itemView.findViewById(R.id.order_txt_price);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43092479/article/details/86559292