MVP+RxJava+Retrofit使用GET解析拼参数
来源:互联网 发布:淘宝领的红包在哪里 编辑:程序博客网 时间:2024/06/08 03:43
添加依赖
compile 'com.hjm:BottomTabBar:1.1.1' compile 'com.squareup.retrofit2:retrofit:2.0.1' compile 'com.squareup.retrofit2:converter-gson:2.0.1' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'//fresco compile 'com.facebook.fresco:fresco:0.14.1' //banner compile 'com.youth.banner:banner:1.4.9'// glide compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.jakewharton:butterknife:7.0.1' compile 'com.android.support:recyclerview-v7:26.+' compile'org.greenrobot:greendao:3.1.0' compile'org.greenrobot:greendao-generator:3.1.0'
public class Api {// http://gank.io/api/data/Android/10/1public static final String BASE_URL="http://gank.io/api/";}
public interface ApiService { @GET("data/Android/{size}/{page}") Observable<MyBean> getMovieData(@Path("size") String size, @Path("page") String page);}
public class App extends Application {@Overridepublic void onCreate() { super.onCreate(); //初始化fresco Fresco.initialize(this);}}
public interface IView { //获取请求好的数据 void getShowData(MyBean myBean);}
public class MainActivity extends AppCompatActivity { private BottomTabBar mb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mb =(BottomTabBar)findViewById(R.id.bottom_tab_bar); mb.init(getSupportFragmentManager()) .setImgSize(50,50) .setFontSize(14) .setTabPadding(4,6,10) .setChangeColor(Color.RED,Color.DKGRAY) .addTabItem("首页",R.mipmap.ic_launcher, Fragment01.class) .addTabItem("想法",R.mipmap.ic_launcher, Fragment02.class) .addTabItem("市场",R.mipmap.ic_launcher, Fragment03.class) .addTabItem("通知",R.mipmap.ic_launcher, Fragment04.class) .addTabItem("更多",R.mipmap.ic_launcher, Fragment05.class) .isShowDivider(false) .setOnTabChangeListener(new BottomTabBar.OnTabChangeListener() { @Override public void onTabChange(int position, String name) { } }); }}
public interface IModel { //请求网路数据 void getHttpData(String url, String catalogId, String pnum,OnFinish onFinish);}
public interface OnFinish { void OnFinishListener(MyBean myBean);}
public class Model implements IModel{ @Override public void getHttpData(String url, String catalogId, String pnum, final OnFinish onFinish) { Retrofit retrofit = new Retrofit.Builder().baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); //动态代理得到网络接口 ApiService apiService = retrofit.create(ApiService.class); rx.Observable<MyBean> movieData = apiService.getMovieData(catalogId,pnum); movieData.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<MyBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(MyBean myBean) { onFinish.OnFinishListener(myBean); } }); }}
public interface IPresenter { void loadList(String url,String a,String b);}
public class MyPresenter implements IPresenter { //定义view和model接口的变量 private final IView iview; private final IModel iModel; public MyPresenter(IView iview) { this.iview = iview; this.iModel = new Model(); } @Override public void loadList(String url, String a, String b) { iModel.getHttpData(url, a, b, new OnFinish() { @Override public void OnFinishListener(MyBean myBean) { iview.getShowData(myBean); } }); }}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {// @Bind(R.id.name)// TextView name;// @Bind(R.id.des)// TextView des;// @Bind(R.id.img)// ImageView img; private Context context; private List<MyBean.ResultsBean> list; public MyAdapter(Context context, List<MyBean.ResultsBean> list) { this.context = context; this.list = list; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.name.setText(list.get(position).who); holder.des.setText(list.get(position).desc);// Glide.with(context).load(list.get(position).images).into(holder.img); Uri imgUrl = Uri.parse("http://img.gank.io/fef497ed-83ba-46f6-8a94-0e7b724e1c10"); holder.img.setImageURI(imgUrl); } @Override public int getItemCount() { return list.size(); } public class ViewHolder extends RecyclerView.ViewHolder { public TextView name,des; public SimpleDraweeView img; public ViewHolder(View itemView) { super(itemView); name=itemView.findViewById(R.id.name); des=itemView.findViewById(R.id.des); img=itemView.findViewById(R.id.img); } }}
public class Fragment01 extends Fragment implements IView{ @Bind(R.id.recycler) RecyclerView recycler;@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedIstanceState) { View view = inflater.inflate(R.layout.fragment_01, null); ButterKnife.bind(this, view); LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getContext()); recycler.setLayoutManager(linearLayoutManager); MyPresenter myPresenter = new MyPresenter(this); myPresenter.loadList(Api.BASE_URL,"10","1");return view;}@Overridepublic void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this);}@Overridepublic void getShowData(MyBean myBean) {MyAdapter myAdapter = new MyAdapter(getContext(), myBean.results);recycler.setAdapter(myAdapter);}}
主页面布局
<com.hjm.bottomtabbar.BottomTabBar android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/bottom_tab_bar" ></com.hjm.bottomtabbar.BottomTabBar>
fragment布局
<android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recycler"></android.support.v7.widget.RecyclerView></LinearLayout>
item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:layout_height="wrap_content"> <LinearLayout android:layout_width="0dp" android:layout_height="150dp" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/name"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/des"/> </LinearLayout> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/img" android:layout_width="0dp" android:layout_height="150dp" android:layout_weight="1" android:layout_margin="8dp" fresco:failureImage="@mipmap/ic_launcher" /></LinearLayout>
阅读全文
0 0
- MVP+RxJava+Retrofit使用GET解析拼参数
- MVP+Retrofit+RxJava 使用
- 使用rxjava,retrofit,okhttp实现mvp模式的数据解析
- MVP+Retrofit+RxJava组合使用
- MVP+Rxjava+Retrofit的使用
- Retrofit+RxJava+MVP模式使用
- Android中的RxJava,Retrofit,MVP的使用
- 优雅的使用MVP+RxJava+Retrofit框架
- MVP+retrofit+rxjava+Knife的简单使用
- Mvp-Retrofit-Rxjava-Rxbus的初步使用
- Okhttp+Retrofit+Rxjava+MVP联合使用
- MVP+Retrofit+RxJava(Flowable)结合使用
- 使用MVP+Retrofit+RXJava实现仿京东分类
- MVP+Dagger2+Retrofit+Rxjava
- Retrofit实践(MVP+RxJava)
- Rxjava+MVP+Retrofit强强联合
- MVP、Retrofit、RxJava、RxBus
- Rxjava+retrofit+mvp整合
- 容器vector&list
- (二)java框架篇笔记库(15)
- 网络回调
- 状压dp Hie with the Pie
- Eclipse项目出现红色叹号的解决办法
- MVP+RxJava+Retrofit使用GET解析拼参数
- 吴恩达(Andrew Ng)深度学习工程师笔记
- (安卓)属性动画 (平移,旋转,透明)
- 命令注入突破长度限制 | 从CTF题目讲起
- 解锁css3新姿势之transform3D各属性及transform兼容之矩阵写法
- 【PAT】1003. 我要通过!(20) C++语言 浙江大学PAT上机题
- mysql -5.7 的安装
- view的CustomBanner轮播
- web开发者工具插件