MVP+RxJava+Retrofit实现Banner图

来源:互联网 发布:怎么做淘宝客服教程 编辑:程序博客网 时间:2024/06/09 18:37

导入依赖:

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/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>
原创粉丝点击