• RxJava+okhttp3


    //Recycleview依赖
        implementation 'com.android.support:recyclerview-v7:26.1.0'
        //拦截器的依赖
        compile 'com.squareup.okhttp3:logging-interceptor:3.8.0'
        //SimpleDraweeView加载图片的依赖:
        compile 'com.facebook.fresco:fresco:1.5.0'
        //Banner的依赖:
        compile 'com.youth.banner:banner:1.4.10'
       // Fresco依赖:
        compile 'com.facebook.fresco:fresco:1.5.0'
        //Eventbus依赖:
        compile 'org.greenrobot:eventbus:3.1.1'
       // Rxjava2:
        compile 'io.reactivex.rxjava2:rxjava:2.1.7'
        compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
        compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    
        //Okhttp依赖
        compile 'com.squareup.okhttp3:okhttp:3.9.1'
    
        //retrofit依赖
        compile 'com.squareup.retrofit2:retrofit:2.3.0'
        //GSON依赖
        compile 'com.squareup.retrofit2:converter-gson:2.3.0'
        //底部按钮
        compile 'com.hjm:BottomTabBar:1.1.1'
        //刷新页面
        compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-4'

    RetrofitHelper

    public class RetrofitHelper {
        private static OkHttpClient client;
        private static ServiceApi api;
        static {
            initOkHttp();
        }
    
        private static void initOkHttp() {
            if (client == null) {
                synchronized (OkHttpClient.class) {
                    if (client == null) {
                        client = new OkHttpClient.Builder().build();
                    }
                }
            }
        }
    
        public static ServiceApi getApi() {
            if (api == null) {
                synchronized (ServiceApi.class) {
                    if (api == null) {
                        api = RetrofitHelper.create(ServiceApi.class, UrlUtils.BASE_URL);
                    }
                }
            }
            return api;
        }
    
        private static <T> T create(Class<T> tClass, String baseUrl) {
            Retrofit re = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .build();
            return re.create(tClass);
        }
    }
    

      

    OnListiner
    public interface OnListiner<T> {
        public void onSuccess(T t);
        public void onFailure(Throwable throwable);
    
    }
    

      

    UrlUtils
    public class UrlUtils {
    
        public static final String BASE_URL="https://www.zhaoapi.cn/";
        public static final String HEAD_PATH="ad/getAd";
        public static final String HEAD_FEN="product/getCatagory";
        public static final String SUBCLASS="product/getProductCatagory";
    
    }
    

      

    ServiceApi
    public interface ServiceApi {
       //首页请求
       @GET(UrlUtils.HEAD_PATH)
       public Flowable<HeadBean> getHeads();
       //分类请求
       @GET(UrlUtils.HEAD_FEN)
       public Flowable<ClassifyBean> getClassify();
       //子分类请求
       @GET(UrlUtils.SUBCLASS)
       public Flowable<SubClass> getSubClass(@Query("cid") String cid);
    
    
    }
    

      M

    public class HeadModel implements IHeadModel {
        @Override
        public void getDatas(final OnListiner onListiner) {
            ServiceApi api = RetrofitHelper.getApi();
            Flowable<HeadBean> getAd = api.getHeads();
            getAd.doOnSubscribe(new Consumer<Subscription>() {
                @Override
                public void accept(Subscription subscription) throws Exception {
                    Log.i("hhhhhhhhhhhhhhhhhhh","开始请求数据");
                }
            })
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer<HeadBean>() {
                @Override
                public void accept(HeadBean headBean) throws Exception {
                    onListiner.onSuccess(headBean);
                }
            });
        }
    
    }
    

     

    public interface IClassifyModel<T> {
        public void getClassifyDatas(OnListiner<T> onListiner);
    }
    

      

     P

    public class HeadPresenter {
        private IHeadFragment iHeadFragment;
        private IHeadModel iHeadModel;
    
        public HeadPresenter(IHeadFragment iHeadFragment) {
            this.iHeadFragment = iHeadFragment;
            iHeadModel = new HeadModel();
        }
        public void getHeadDatas()
        {
            iHeadModel.getDatas(new OnListiner() {
                @Override
                public void onSuccess(Object o) {
                    iHeadFragment.getDatas((HeadBean) o);
                }
    
                @Override
                public void onFailure(Throwable throwable) {
    
                }
            });
        }
    }
    

      V

    public interface IHeadFragment {
        public void getDatas(HeadBean headBean);
    }
    

      

    public class Fragment01 extends Fragment implements IHeadFragment {
        private HeadPresenter presenter;
        private Banner banner;
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment01,container,false);
            banner = view.findViewById(R.id.banner);
            presenter = new HeadPresenter(this);
            presenter.getHeadDatas();
            return view;
        }
    
        @Override
        public void getDatas(HeadBean headBean) {
            Toast.makeText(getActivity(),headBean.getCode(),Toast.LENGTH_SHORT).show();
            List<String> images = new ArrayList<>();
            List<HeadBean.DataBean> data = headBean.getData();
            for (int i = 0;i<data.size();i++)
            {
                images.add(data.get(i).getIcon()) ;
            }
            banner.setImageLoader(new GlideImageLoader());
            banner.isAutoPlay(true);
    
    //设置轮播的时间间隔
            banner.setDelayTime(3000);
            banner.setImages(images);
            banner.start();
        }
    }
    

      适配器

    public class HeadClassify extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
        private Context context;
        private List<ClassifyBean.DataBean> list;
        private LayoutInflater inflater;
    
        public HeadClassify(Context context, List<ClassifyBean.DataBean> list) {
            this.context = context;
            this.list = list;
            inflater =LayoutInflater.from(context);
        }
    
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = inflater.inflate(R.layout.head_fenlei_item, parent, false);
            return new MyViewHolder(view);
        }
    
        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            MyViewHolder holder1 = (MyViewHolder) holder;
            ClassifyBean.DataBean dataBean = list.get(position);
            Uri parse = Uri.parse(dataBean.getIcon());
            holder1.img.setImageURI(parse);
            holder1.txt.setText(dataBean.getName());
        }
    
        @Override
        public int getItemCount() {
            return list.size();
        }
        class MyViewHolder extends RecyclerView.ViewHolder{
            private SimpleDraweeView img;
            private TextView txt;
            public MyViewHolder(View itemView) {
                super(itemView);
               img = itemView.findViewById(R.id.fenlei_img);
               txt = itemView.findViewById(R.id.fenlei_txt);
            }
        }
    }
    

      

    <?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"
        android:background="#ffffff"
        >
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                >
                <com.youth.banner.Banner
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:id="@+id/banner"
                    ></com.youth.banner.Banner>
    
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="200px"
                    android:background="@mipmap/jd_huo_dong"
                    android:id="@+id/jd"
                    android:layout_margin="10dp"
                    />
            </LinearLayout>
    
        </ScrollView>
    
    </LinearLayout>
    

      



  • 相关阅读:
    mysql 写计数器需要注意的问题
    CSS3倒影效果
    svg path 解析
    图论-深度优先和广度优先(均非递归)
    线段树---HDU1166敌兵布阵
    线段树入门---给定多个线段求点的出现个数
    NYOJ-129 并查集
    并查集(基础)
    二叉搜索树
    堆及堆排序
  • 原文地址:https://www.cnblogs.com/wsq110/p/8072684.html
Copyright © 2020-2023  润新知