您的位置:首页 > 编程语言 > Java开发

MVP+RxJava+Retrofit实现Banner图

2017-11-23 09:59 281 查看
导入依赖:

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: