MVP+RxJava+Retrofit实现Banner图
2017-11-23 09:59
281 查看
导入依赖:
Api
Apiservice
Imodel类
Usermodel 类
Presenter 类
GlideImageLoader类
Activity类:
布局
compile 'com.jcodecraeer:xrecyclerview:1.3.2' compile 'com.youth.banner:banner:1.4.9' compile 'com.github.bumptech.glide:glide:3.7.0'
Api
public class Api { public static final String URL="http://apiv3.yangkeduo.com/v5/"; }
Apiservice
public interface Apiservier { @GET("newlist?page=1&size=10") Observable<User> getUser(); }
Imodel类
public interface Imodel { void getJson(String url); }
Usermodel 类
public class Usermodel implements Imodel{ List<User.GoodsListBean> list; private OnFinish onFinish; public interface OnFinish{ void OnFinishListener(List<User.GoodsListBean> list); } public void setOnFinish(OnFinish finish){ this.onFinish=finish; } @Override public void getJson(String url) { Retrofit retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build(); Apiservier apiService = retrofit.create(Apiservier.class); final Observable<User> home = apiService.getUser(); home.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<User>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.d("11111111111","11111111111"); } @Override public void onNext(User user) { list = (List<User.GoodsListBean>) user.getGoods_list(); onFinish.OnFinishListener(list); } }); } }
Presenter 类
public class Presenter implements Usermodel.OnFinish { private final Iview userView; private final Usermodel userModel; public Presenter(Iview userView) { this.userView = userView; this.userModel = new Usermodel(); userModel.setOnFinish(this); } public void setNews(String url){ userModel.getJson(url); } @Override public void OnFinishListener(List<User.GoodsListBean> list) { userView.getUsee(list); } }
GlideImageLoader类
import android.content.Context; import android.widget.ImageView; import com.bumptech.glide.Glide; import com.youth.banner.loader.ImageLoader; /** * Created by wangjiao on 2017/10/14. */ public class GlideImageLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load(path).into(imageView); } }
Activity类:
public class Sencend extends AppCompatActivity implements Iview{ Banner mbanner; Presenter userPresenter; HomeAdapter homeAdapter; XRecyclerView xrecyclerView; private int curr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sencend); mbanner = (Banner) findViewById(R.id.mybanner); xrecyclerView = (XRecyclerView) findViewById(R.id.xre_xrv); userPresenter = new Presenter(this); userPresenter.setNews(Api.URL); xrecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { curr=0; // list.clear(); // get(Api.URL,curr); xrecyclerView.refreshComplete(); } @Override public void onLoadMore() { curr++; xrecyclerView.refreshComplete(); } }); } @Override public void getUsee(List<User.GoodsListBean> list) { Log.d("99999999999",list.get(2).toString()+"1111"); homeAdapter = new HomeAdapter(list,Sencend.this); xrecyclerView.setAdapter(homeAdapter); xrecyclerView.setLayoutManager(new LinearLayoutManager(this)); //轮播 List<String> mlist = new ArrayList<String>(); for(int i=0; i<list.size();i++){ String ad1s = list.get(i).getImage_url(); mlist.add(ad1s); } //设置图片加载器 mbanner.setImageLoader(new GlideImageLoader()); mbanner.setImages(mlist); mbanner.start(); } }
布局
<LinearLayout android:id="@+id/linearLayout" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="200dp" > <com.youth.banner.Banner android:id="@+id/mybanner" android:layout_width="match_parent" android:layout_height="200dp"> </com.youth.banner.Banner> </LinearLayout> <LinearLayout android:layout_below="@+id 99c7 /linearLayout" android:layout_width="match_parent" android:layout_height="wrap_content"> <com.jcodecraeer.xrecyclerview.XRecyclerView android:layout_width="match_parent" android:id="@+id/xre_xrv" android:layout_height="wrap_content"> </com.jcodecraeer.xrecyclerview.XRecyclerView> </LinearLayout>
相关文章推荐
- Retrofit+rxjava+mvp实现登录
- Android--MVP+Retrofit+Rxjava的实现
- Rxjava+Retrofit+okhttp+mvp实现
- Android 框架设计Demo,一个简单的MVP示例搜索功能,网络请求用Retrofit+RxJava实现
- RxJava+Retrofit+Mvp实现购物车
- Android-MVP+Retrofit+Rxjava实现一个知乎日报客户端
- RxJava2+MVP+Retrofit框架简单实现RecyclerView
- 使用MVP框架,retrofit结合Rxjava以及fresco加载图片,用recycleview实现
- Android Retrofit+Rxjava+MVP+EventBus+ButterKnife实现接口登录(无正则表达式)
- (安卓) MVP 框架 (Rxjava2+Retrofit)结合 实现网络请求
- RxJava+Retrofit+Mvp实现购物车(没有结算页面)
- mvp实现(banner+retrofit+recyclerview+fresco)
- 终极封装 Rxjava+Retrofit+okhttp+mvp实现
- mvp+retrofit+rxjava xrecyclerview实现多条目 下拉刷新 下拉加载 点击跳转
- MVP+Retrofit+RxJava请求网络数据实现RecyclerView多条目展示
- RxJava+Retrofit+MVP实现相册相机图片上传
- kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式
- MVP(Retrofit+RXJava)实现网络请求
- Retrofit+RxJava+Mvp实现多线程视频下载
- 使用rxjava,retrofit,okhttp实现mvp模式的数据解析