mvp+rxjava+retrofit+okhttp
来源:互联网 发布:淘宝怎么给快递差评 编辑:程序博客网 时间:2024/05/17 16:11
//添加依赖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 'com.android.support:recyclerview-v7:26.+'compile 'io.reactivex:rxandroid:1.1.0'compile 'com.facebook.fresco:fresco:0.12.0'compile 'com.jakewharton:butterknife:7.0.1'//网络权限<uses-permission android:name="android.permission.INTERNET"></uses-permission>//注册App<application android:name=".APP"public class Api { public static final String PATH="http://tingapi.ting.baidu.com/";}public interface ApiService { @GET("v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0") Observable<MyBean> getdatas();} Modelpublic interface Imodel { void Request(String url, Onclick onclick);}import java.util.List;import okhttp3.OkHttpClient;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import rx.Observable;import rx.Observer;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;public class model implements Imodel{ private Retrofit retrofit; private ApiService apiService; private Observable<MyBean> noParams; @Override public void Request(String url, final Onclick onclick) { OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(new LoggingInterceptor()) .build(); retrofit = new Retrofit.Builder() .baseUrl(Api.PATH) .client(okHttpClient) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); //通过动态代理得到网络接口对象 apiService = retrofit.create(ApiService.class); noParams = apiService.getdatas(); noParams.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<MyBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { onclick.error(e.getMessage().toString()); } @Override public void onNext(MyBean bean) { List<MyBean.SongListBean>data=bean.getSong_list(); onclick.datasuccess(data); } }); }}public interface Onclick { void datasuccess(List<MyBean.SongListBean> list); void error(String rr);}Persenterpublic class Presenter { Imodel imodel; Iview iview; public Presenter( Iview iview) { this.iview = iview; imodel=new model(); } public void getok(String url){ imodel.Request(url, new Onclick() { @Override public void datasuccess(List<MyBean.SongListBean> list) { iview.showList(list); } @Override public void error(String rr) { iview.showError(rr); } }); }}Viewpublic interface Iview { void showList(List<MyBean.SongListBean> list); void showError(String e);}//因为是Fresco所以需要使用APPpublic class APP extends Application{ @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); }}//网络拦截器public class LoggingInterceptor implements Interceptor { private static final String UA = "User-Agent"; @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request() .newBuilder() .addHeader(UA, makeUA()) .build(); return chain.proceed(request); } private String makeUA() { String s = Build.BRAND + "/" + Build.MODEL + "/" + Build.VERSION.RELEASE; return Build.BRAND + "/" + Build.MODEL + "/" + Build.VERSION.RELEASE; }}//Adapter类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.bawei.mvprjo.R;import com.bawei.mvprjo.bean.MyBean;import com.facebook.drawee.view.SimpleDraweeView;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder>{ List<MyBean.SongListBean> list; Context context; public Adapter(List<MyBean.SongListBean> list, Context context) { this.list = list; this.context = context; } @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.itemImg.setImageURI(list.get(position).getPic_big()); holder.title.setText(list.get(position).getTitle()); holder.name.setText(list.get(position).getAuthor()); } @Override public int getItemCount() { return list.size(); } static class ViewHolder extends RecyclerView.ViewHolder { @Bind(R.id.item_img) SimpleDraweeView itemImg; @Bind(R.id.title) TextView title; @Bind(R.id.name) TextView name; ViewHolder(View view) { super(view); ButterKnife.bind(this, view); } }}
//主界面
public class MainActivity extends AppCompatActivity implements Iview{ private RecyclerView re; private Presenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); re = (RecyclerView) findViewById(R.id.re); presenter = new Presenter(MainActivity.this); presenter.getok(Api.PATH); } @Override public void showList(List<MyBean.SongListBean> list) { LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this); re.setLayoutManager(linearLayoutManager); Adapter adapter=new Adapter(list,MainActivity.this); re.setAdapter(adapter); } @Override public void showError(String e) { }}//自己添加bean包
//布局页面<android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/re" ></android.support.v7.widget.RecyclerView>
//item<com.facebook.drawee.view.SimpleDraweeView android:id="@+id/item_img" android:layout_width="150dp" android:layout_height="150dp" android:layout_margin="8dp" fresco:failureImage="@mipmap/ic_launcher" /><TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/title" android:text="aaaaaa" /><TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/name" android:text="aaaaaa" />
阅读全文
0 0
- RxJava+Retrofit+OkHttp+mvp
- mvp+rxjava+retrofit+okhttp
- MVP+Retrofit+Okhttp+RxJava
- Retrofit+Rxjava+Okhttp+MVP
- Rxjava+Retrofit+okhttp+mvp实现
- 简单MVP-Retrofit-Rxjava-OKhttp
- mvp demo:mvp+rxjava+retrofit(okhttp)+greendao
- RxJava+okhttp+Retrofit+Mvp 的封装
- 网络请求框架 Rxjava+ReTrofit+okHttp+MVP
- rxjava+retrofit+okhttp+mvp 简单实践
- MVP+Retrofit+RxJava+Okhttp拦截器
- MVP+Retrofit+RxJava+Okhttp拦截器
- 终极封装 Rxjava+Retrofit+okhttp+mvp实现
- MVP+Rxjava+Okhttp+Retrofit+XRecyclerview请求数据
- Okhttp+Retrofit+Rxjava+MVP联合使用
- MVP泛型+RecyclerView+Retrofit+OkHttp+RxJava
- RxJava RxAndroid Retrofit RxBus Dragger2 OkHttp MVP MVVM DataBinding
- 使用rxjava,retrofit,okhttp实现mvp模式的数据解析
- GreenDao的简单使用
- HttpUrlConnection用get和post请求发送参数
- 手把手:用OpenCV亲手给小扎、Musk等科技大佬们做一张“平均脸”(附Python代码)
- Cookie/Session机制详解
- android Math的使用
- mvp+rxjava+retrofit+okhttp
- 隔行变色,选中变色,鼠标变小手样式;姓名查询条件 过滤敏感字符 下拉列表排序 非空验证添加信息 点击按钮删除
- huffman数据结构书上的
- C语言不同之处
- PullToRefresh下拉和上拉简单实现
- 在一个千万级的数据库查寻中,如何提高查询效率?
- 编译原理学习笔记 二 -- 一个简单的语法制导翻译器
- 二级购物车附加:
- 基于lamp搭建一个简单的论坛