MVP +Retrofit +Rxjava 请求
来源:互联网 发布:音序器软件中文版 编辑:程序博客网 时间:2024/04/30 18:11
今天我们一起来搭建 mvp + retrofit + rxjava 框架先导入依赖 compile 'com.squareup.okhttp3:logging-interceptor:3.9.0' compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.google.code.gson:gson:2.8.2' compile 'com.facebook.fresco:fresco:1.5.0' compile 'com.youth.banner:banner:1.4.9' compile 'com.github.bumptech.glide:glide:4.0.0' compile 'com.github.leifzhang:IjkLib:0.4.3' 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' compile 'com.jcodecraeer:xrecyclerview:1.3.2' compile 'com.facebook.fresco:fresco:1.5.0' compile 'org.greenrobot:greendao:3.2.0' compile 'org.greenrobot:greendao-generator:3.2.0' compile 'com.getbase:floatingactionbutton:1.10.1' compile 'fm.jiecao:jiecaovideoplayer:5.5' compile 'com.android.support:recyclerview-v7:26.0.0-alpha1' (在使用 jiecaovideoplayer:5.5'饺子视频播放的时候要把minSdkVersion 改成16) //清单文件 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />PS: 还有name="" 哦!//activity_main.xml<?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"> <com.youth.banner.Banner android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/ban"/> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:id="@+id/rvnn"/></LinearLayout>//item.xml<?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="100dp" android:orientation="horizontal" > <fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard android:layout_width="150dp" android:layout_height="match_parent" android:id="@+id/video_view" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/con" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/Tiel" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout></LinearLayout>//bean包下的public class InfoBean { private int code; private String msg; private List<DataBean> data; public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public List<DataBean> getData() { return data; } public void setData(List<DataBean> data) { this.data = data; } public static class DataBean { private String content; private int id; private String image_url; private String title; private int type; private String vedio_url; public String getContent() { return content; } public void setContent(String content) { this.content = content; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getImage_url() { return image_url; } public void setImage_url(String image_url) { this.image_url = image_url; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getType() { return type; } public void setType(int type) { this.type = type; } public String getVedio_url() { return vedio_url; } public void setVedio_url(String vedio_url) { this.vedio_url = vedio_url; } }}//适配器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.bwei.Bean.InfoBean;import com.bwei.month3.R;import java.util.List;import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard;public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<InfoBean.DataBean> list; public MyAdapter(Context context, List<InfoBean.DataBean> list) { this.context = context; this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view= LayoutInflater.from(context).inflate(R.layout.item,parent,false); return new Viewitem(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { Viewitem viewitem= (Viewitem) holder; viewitem.con.setText(list.get(position).getContent()); viewitem.tie.setText(list.get(position).getTitle()); String vedio_url=list.get(position).getVedio_url(); viewitem.view.setUp(vedio_url+"",viewitem.view.SCREEN_LAYOUT_NORMAL,list.get(position).getTitle()); } @Override public int getItemCount() { return list.size(); } class Viewitem extends RecyclerView.ViewHolder{ private final JCVideoPlayerStandard view; private final TextView con; private final TextView tie; public Viewitem(View itemView) { super(itemView); view=itemView.findViewById(R.id.video_view); con=itemView.findViewById(R.id.con); tie=itemView.findViewById(R.id.Tiel); } }}//myapp下的Apppublic class App extends Application{ @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); }}//net包下的APIpublic class Api { public static final boolean isOnline = false; public static final String devIP = "http://result.eolinker.com"; public static final String workIP = ""; public static final String HOST = isOnline ? workIP : devIP; public static final String LOG=HOST+"/";}//ApiServicepublic interface ApiService { @GET("iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9") Observable<InfoBean> getNoParams(@Query("uri")String uri);}//RetrofitUtilimport android.util.Log;import java.util.concurrent.TimeUnit;import okhttp3.OkHttpClient;import okhttp3.logging.HttpLoggingInterceptor;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;public class RetrofitUtil { private static RetrofitUtil retrofitUtil; private RetrofitUtil(){ } public static RetrofitUtil getInstance(){ if(retrofitUtil==null){ synchronized (RetrofitUtil.class){ if(retrofitUtil==null){ retrofitUtil=new RetrofitUtil(); } } } return retrofitUtil; } private static Retrofit retrofit; public static synchronized Retrofit getRetrofit(String url){ HttpLoggingInterceptor tag = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { @Override public void log(String message) { Log.i("TAG", message); } }); tag.setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(tag).connectTimeout(5000, TimeUnit.SECONDS).build(); if(retrofit==null){ retrofit= new Retrofit.Builder().client(okHttpClient).baseUrl(url).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build(); } return retrofit; } public <T> T getApiService(String url,Class<T> clazz){ Retrofit retrofit = getRetrofit(url); return retrofit.create(clazz); }}//MOdel层的IShowModelpublic interface IShowModel { void onSuexxc(InfoBean infoBean);}//ShowModelpublic class ShowModel { private Context context; public ShowModel(Context context) { this.context = context; } public void zhu(final IShowModel iShowModel){ Retrofit retrofit = RetrofitUtil.getRetrofit(Api.LOG); ApiService apiService = retrofit.create(ApiService.class); Observable<InfoBean> observable = apiService.getNoParams("vedio"); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .map(new Func1<InfoBean, InfoBean>() { @Override public InfoBean call(InfoBean disanBean) { return disanBean; } }).subscribe(new Subscriber<InfoBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(InfoBean infoBean) { iShowModel.onSuexxc(infoBean); } }); }}//presenter包下的ShowPersenterimport android.content.Context;import com.bwei.Bean.InfoBean;import com.bwei.Model.IShowModel;import com.bwei.Model.ShowModel;import com.bwei.View.ShowView;public class ShowPersenter { private Context context; private ShowView showView; private final ShowModel showModel; public ShowPersenter(Context context, ShowView showView) { this.context = context; this.showView = showView; showModel=new ShowModel(context); } public void getWin(){ showModel.zhu(new IShowModel() { @Override public void onSuexxc(InfoBean infoBean) { showView.getBEan(infoBean); } }); }}//View层的ShowViewpublic interface ShowView { public void getBEan(InfoBean infoBean);}//MainActivityimport android.content.Context;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.widget.ImageView;import com.bumptech.glide.Glide;import com.bwei.Adapter.MyAdapter;import com.bwei.Bean.InfoBean;import com.bwei.Presenter.ShowPersenter;import com.bwei.View.ShowView;import com.youth.banner.Banner;import com.youth.banner.BannerConfig;import com.youth.banner.loader.ImageLoader;import java.util.ArrayList;import java.util.List;import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer;public class MainActivity extends AppCompatActivity implements ShowView { private Banner mBan; private List<String> list = new ArrayList<String>(); private ShowPersenter showPersenter; private MyAdapter adapter; private RecyclerView mRvnn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); showPersenter.getWin(); } private void initView() { mBan = (Banner) findViewById(R.id.ban); showPersenter = new ShowPersenter(this, this); mRvnn = (RecyclerView) findViewById(R.id.rvnn); LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this); mRvnn.setLayoutManager(linearLayoutManager); } public class Glider extends ImageLoader{ @Override public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load(path).into((ImageView) imageView); } } @Override public void onBackPressed() { if (JCVideoPlayer.backPress()){ return; } super.onBackPressed(); } @Override protected void onPause() { super.onPause(); JCVideoPlayer.releaseAllVideos(); } @Override public void getBEan(InfoBean infoBean) { List<InfoBean.DataBean> data=infoBean.getData(); adapter = new MyAdapter(MainActivity.this, data); mRvnn.setAdapter(adapter); for(int i=0;i<data.size();i++){ list.add(data.get(i).getImage_url()+""); } mBan.setImageLoader(new Glider()); mBan.setDelayTime(2000); mBan.setImages(list); mBan.setBannerStyle(BannerConfig.CIRCLE_INDICATOR); mBan.start(); }}
阅读全文
0 0
- MVP +Retrofit +Rxjava 请求
- 网络请求框架 Rxjava+ReTrofit+okHttp+MVP
- MVP+Rxjava+Okhttp+Retrofit+XRecyclerview请求数据
- android+MVP+Retrofit+RxJava做网络请求
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- MVP(Retrofit+RXJava)实现网络请求
- MVP+Dagger2+Retrofit+Rxjava
- Retrofit实践(MVP+RxJava)
- Rxjava+MVP+Retrofit强强联合
- MVP、Retrofit、RxJava、RxBus
- Rxjava+retrofit+mvp整合
- MVP+retrofit+rxjava
- Android MVP +Retrofit+RxJava
- 最新Retrofit + RxJava + MVP
- MVP+Retrofit+Rxjava实战
- RxJava+Retrofit+MVP+Dagger2
- MVP+Retrofit+RxJava
- Retrofit+RxJava+Fresco+MVP
- POJ3669---跳炸弹(广搜)
- 拓扑排序(关键路径)
- ionic侧滑
- gpu 性能容量的单位是啥
- LeetCode 5. Longest Palindromic Substring
- MVP +Retrofit +Rxjava 请求
- 可变长数组的 OO 实现
- View的事件分发机制
- filter修改request参数
- Android 开发进阶路线
- 区块链简介
- C C++ 字符串分割
- 516. Longest Palindromic Subsequence
- 进程结构