MVP+retrofit和Rxjava请求数据+recyclerview展示
来源:互联网 发布:淘宝网首页棉布 编辑:程序博客网 时间:2024/06/06 16:57
接口;
http://api.tianapi.com/nba/?key=71e58b5b2f930eaf1f937407acde08fe&num=10
依赖:
compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'com.squareup.retrofit2:converter-scalars:2.3.0' compile 'io.reactivex.rxjava2:rxjava:2.1.7' compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.facebook.fresco:fresco:1.5.0'
IApplication
package com.example.myapplication;import android.app.Application;import com.facebook.drawee.backends.pipeline.Fresco;import retrofit2.Retrofit;import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;/** * Created by Administrator on 2017/12/6. */public class IApplication extends Application { public static IGEtDataBase igEtDataBase; @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); Retrofit retrofit=new Retrofit.Builder() .baseUrl("http://api.tianapi.com") .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); igEtDataBase = retrofit.create(IGEtDataBase.class); }}
IGetDataBase
package com.example.myapplication;import com.example.myapplication.bean.Bean;import java.util.Map;import io.reactivex.Observable;import retrofit2.http.FieldMap;import retrofit2.http.FormUrlEncoded;import retrofit2.http.GET;import retrofit2.http.POST;import retrofit2.http.QueryMap;import retrofit2.http.Url;/** * Created by Administrator on 2017/12/6. */public interface IGEtDataBase { @GET("/nba/") Observable<Bean> get(@QueryMap Map<String,String> map);/* @GET Observable<String> get(@Url String url, @QueryMap Map<String,String> map); @GET Observable<String> get(@Url String url); @FormUrlEncoded @POST Observable<String> post(@Url String url, @FieldMap Map<String,String> map);*/}
model层
MyModelCallBack
package com.example.myapplication.model;import com.example.myapplication.bean.Bean;/** * Created by Administrator on 2017/12/6. */public interface MyModelCallBack { public void success(Bean bean); public void fail(Exception e);}
MyModel
package com.example.myapplication.model;import com.example.myapplication.IApplication;import com.example.myapplication.bean.Bean;import java.util.HashMap;import java.util.Map;import io.reactivex.Observable;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.functions.Consumer;import io.reactivex.schedulers.Schedulers;import retrofit2.Call;/** * Created by Administrator on 2017/12/6. */public class MyModel { public void getData(final MyModelCallBack callBack){ Map<String, String> map = new HashMap<>(); map.put("key","71e58b5b2f930eaf1f937407acde08fe"); map.put("num","10"); IApplication.igEtDataBase.get(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Bean>() { @Override public void accept(Bean bean) throws Exception { callBack.success(bean); } }); }}
MyListener
package com.example.myapplication.view;import com.example.myapplication.bean.Bean;/** * Created by Administrator on 2017/12/6. */public interface MyListener { public void success(Bean bean); public void fail(Exception e);}
MyPresenter
package com.example.myapplication.presenter;import com.example.myapplication.bean.Bean;import com.example.myapplication.model.MyModel;import com.example.myapplication.model.MyModelCallBack;import com.example.myapplication.view.MyListener;/** * Created by Administrator on 2017/12/6. */public class MyPresenter { MyListener listener; MyModel model; public MyPresenter(MyListener listener){ this.listener=listener; this.model=new MyModel(); } public void get(){ model.getData(new MyModelCallBack() { @Override public void success(Bean bean) { listener.success(bean); } @Override public void fail(Exception e) { listener.fail(e); } }); }}
MainActivity
package com.example.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import com.example.myapplication.bean.Bean;import com.example.myapplication.presenter.MyPresenter;import com.example.myapplication.view.MyListener;public class MainActivity extends AppCompatActivity implements MyListener{ private RecyclerView recyclerView; private MyPresenter presenter; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recycle); presenter = new MyPresenter(this); presenter.get(); LinearLayoutManager manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); recyclerView.setLayoutManager(manager); adapter = new MyAdapter(this); recyclerView.setAdapter(adapter); } @Override public void success(Bean bean) { adapter.add(bean); } @Override public void fail(Exception e) { }}
布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.myapplication.MainActivity"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recycle"></android.support.v7.widget.RecyclerView></LinearLayout>
MyAdapter
package com.example.myapplication;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.example.myapplication.bean.Bean;import com.facebook.drawee.view.SimpleDraweeView;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2017/12/6. */class MyAdapter extends RecyclerView.Adapter<MyAdapter.IViewHolder> { Context context; List<Bean.NewslistBean> list; public MyAdapter(Context context) { this.context=context; } public void add(Bean bean) { if(list==null){ list=new ArrayList<>(); } list.addAll(bean.getNewslist()); notifyDataSetChanged(); } @Override public IViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view= LayoutInflater.from(context).inflate(R.layout.adapter_item,null); return new IViewHolder(view); } @Override public void onBindViewHolder(IViewHolder holder, int position) { holder.simole.setImageURI(list.get(position).getPicUrl()); holder.title.setText(list.get(position).getTitle()); } @Override public int getItemCount() { return list==null ? 0 : list.size(); } public class IViewHolder extends RecyclerView.ViewHolder { private final TextView title; private final SimpleDraweeView simole; public IViewHolder(View itemView) { super(itemView); title = itemView.findViewById(R.id.title); simole = itemView.findViewById(R.id.simple); } }}
适配器布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"><TextView android:layout_width="250dp" android:id="@+id/title" android:layout_height="wrap_content" /> <com.facebook.drawee.view.SimpleDraweeView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/simple" app:roundAsCircle="true"/></LinearLayout>
阅读全文
0 0
- MVP+retrofit和Rxjava请求数据+recyclerview展示
- MVP+Retrofit+RxJava请求网络数据实现RecyclerView多条目展示
- MVp+RXJava+Retrofit+RecyclerView展示首页和详情页
- MVP和Retrofit+Rxjava+OkHttp封装结合请求数据
- Kotlin新语言使用RxJava+Retrofit请求网络数据+lambda表达式+RecyclerView展示+Glide展示图片
- MVP+Rxjava+Fresco+Retrofit实现Recyclerview列表展示
- Rxjava观察者模式+Retrofit请求GSON数据+Fresco处理图片+Xrecyclerview展示数据+MVP模式
- MVP+Rxjava+Okhttp+Retrofit+XRecyclerview请求数据
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- 新语言Kotlin使用recyclerview展示数据+retrofit请求数据+Rxjava
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- MVP +Retrofit +Rxjava 请求
- MVP+Retrofit+ReJava+Xrecyclerview请求展示数据
- MVP+Retrofit+RxJava+fresco+RecyclerView
- MVP模式OKhttp请求RecyclerView展示数据
- Retrofit+RxJava+Okhttp+RecycleView+MVP简单的展示数据
- Retrofit2 + RxJava + Okhttp + RecyclerView用MVP架构展示数据
- RxJava结合Retrofit使用 自定义封装类结合泛型 请求网络数据+Fresco+RecyclerView+MVP分层
- 程序员笔记软件Boostnote
- MySQL使用GROUP_CONCAT()函数按ID分组将多条记录的某个字段以逗号或者指定分隔号隔开成一条记录
- Mysql笔记1
- Android 蓝牙开发【二】BLE开发 (Android4.3)
- 关于ActiveMQ中Topic持久化配置问题
- MVP+retrofit和Rxjava请求数据+recyclerview展示
- 【vscode】vscode在windows与ubuntu下编译调试C/C++
- python2.7执行shell脚本
- 为什么你申请微信支付收到的邮件中没有PaySignKey?
- 无需其他工具就能进行远程控制
- Facebook 最热门的开源项目推荐!
- iOS 开发技术栈与进阶
- Android APP开发自测点
- HDOJ1248 寒冰王座