MVP+RxJava+Retrofit实现Banner图

导入依赖:

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>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值