导入依赖
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.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:mediarouter-v7:25.0.0'
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:recyclerview-v7:25.0.0'
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
compile 'com.facebook.fresco:fresco:0.12.0'
compile 'com.facebook.fresco:animated-base-support:0.12.0'
view层
public interface IUserView {
void getUser(ArrayList<HomeBean.NewslistBean> list);
}
model层
IUserMode 接口
public interface IUserMode {
void getJson(String url);
}
UserMode 类
public class UserMode implements IUserMode{
ArrayList<HomeBean.NewslistBean> list;
private OnFinish onFinish;
public interface OnFinish{
void OnFinishListener(ArrayList<HomeBean.NewslistBean> list);
}
public void setOnFinish(OnFinish finish){
this.onFinish=finish;
}
@Override
public void getJson(String url) {
list = new ArrayList<>();
Retrofit retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();
ApiService apiService = retrofit.create(ApiService.class);
final Observable<HomeBean> home = apiService.getHome();
home.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<HomeBean>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(HomeBean homeBean) {
list = (ArrayList<HomeBean.NewslistBean>) homeBean.getNewslist();
onFinish.OnFinishListener(list);
}
});
}
}
presenter包
public class UserPresenter implements UserMode.OnFinish{
private final IUserView userView;
private final UserMode userModel;
public UserPresenter(IUserView userView) {
this.userView = userView;
this.userModel = new UserMode();
userModel.setOnFinish(this);
}
public void setNews(String url){
userModel.getJson(url);
}
@Override
public void OnFinishListener(ArrayList<HomeBean.NewslistBean> list) {
userView.getUser(list);
}
}
MainActivity 中
public class MainActivity extends AppCompatActivity implements IUserView{
private XRecyclerView re;
private List<HomeBean.NewslistBean> data;
UserPresenter userPresenter;
private MyAdapter adapter;
private int page=0;
private int curr;
private List<String> list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
re= (XRecyclerView) findViewById(R.id.xre_xrv);
userPresenter = new UserPresenter(this);
userPresenter.setNews(Api.URLONE);
re.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
curr=0;
list.clear();
re.refreshComplete();
}
@Override
public void onLoadMore() {
page=page+1;
re.refreshComplete();
}
});
}
@Override
public void getUser(ArrayList<HomeBean.NewslistBean> list) {
adapter = new MyAdapter(MainActivity.this,list);
re.setAdapter(adapter);
re.setLayoutManager(new LinearLayoutManager(MainActivity.this));
}
}
adpater包中
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{
Context context;
List<HomeBean.NewslistBean> data;
public MyAdapter(Context context, List<HomeBean.NewslistBean> data) {
this.context = context;
this.data = data;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
context).inflate(R.layout.item_home, parent,
false));
return holder;
}
public void onBindViewHolder(final MyViewHolder holder, final int position)
{
holder.tv.setText(data.get(position).getTitle());
//得到图片的url
Uri uri= Uri.parse(data.get(position).getPicUrl());
holder.draweeView.setImageURI(uri);//设置给Fresco
}
@Override
public int getItemCount()
{
return data.size();
}
class MyViewHolder extends RecyclerView.ViewHolder
{
TextView tv;
public SimpleDraweeView draweeView;
public MyViewHolder(View view)
{
super(view);
tv = (TextView) view.findViewById(R.id.i_text);
draweeView=(SimpleDraweeView) view.findViewById(R.id.img);
}
}
}
api包中
Api 类
public class Api {
public static final String URL="http://mnews.gw.com.cn/wap/data/news/";
public static final String URLONE = "http://api.tianapi.com/";
}
ApiService 类中
public interface ApiService {
@GET("tiyu/?key=691dce141baf9b719db22f6382ba5639&num=10")
Observable<HomeBean> getHome();
}