依赖
compile 'com.android.support:design:26.1.0'
compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.facebook.fresco:fresco:0.11.0'
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.okhttp3:okhttp:3.1.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
//若和观察者结合的话,需加上如下依赖:
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'io.reactivex:rxjava:1.0.14'
compile 'io.reactivex:rxandroid:1.0.1'
View
public interface IShowData {
public void showData(List<Bea.ResultsBean> list);
}
Model
public interface IGetData {
public void getData(Observer observer);
}
public class GetData implements IGetData{
@Override
public void getData(Observer observer) {
Retrofit retrofit=new Retrofit.Builder()
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("http://gank.io/")
.build();
UserUrl userUrl=retrofit.create(UserUrl.class);
userUrl.getCall(10,1).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(observer);
}
}
工具类
public interface UserUrl {
//参数是可以变化的
@GET("api/data/Android/{size}/{page}")
Observable<Bea> getCall(@Path("size") int size, @Path("page") int page);
}
Presenter
public class DataPresenter {
GetData model;
IShowData view;
List<Bea.ResultsBean> list=new ArrayList<>();
public DataPresenter(IShowData view) {
this.view=view;
this.model=new GetData();
}
public void getDPData() {
model.getData(new Observer<Bea>(){
@Override
public void onCompleted() {
Log.i("111111P","onCompleted()");
}
@Override
public void onError(Throwable e) {
Log.i("111111P","onError()");
}
@Override
public void onNext(Bea bea) {
Log.i("111111P","onNext()");
list.addAll(bea.getResults());
view.showData(list);
Log.i("111111P",list+"");
}
});
}
}
Fragment
public class Fra_tb1 extends Fragment implements IShowData{
private View view;
private RecyclerView mRv;
List<Bea.ResultsBean> list;
DataPresenter presenter;
MyAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = View.inflate(getContext(), R.layout.frag_tb1, null);
initView(view);
list=new ArrayList<>();
presenter=new DataPresenter(this);
showData(list);
presenter.getDPData();
return view;
}
private void initView(View view) {
mRv = (RecyclerView) view.findViewById(R.id.rv);
}
@Override
public void showData(List<Bea.ResultsBean> list) {
LinearLayoutManager manager = new LinearLayoutManager(getContext());
mRv.setLayoutManager(manager);
adapter = new MyAdapter(getContext(),list);
mRv.setAdapter(adapter);
}
}
适配器
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
Context context;
List<Bea.ResultsBean> list=new ArrayList<>();
public MyAdapter(Context context, List<Bea.ResultsBean> list) {
this.context = context;
this.list = list;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=View.inflate(context, R.layout.item,null);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Uri uri=Uri.parse("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1512194192440&di=060d73d7e3d302a94ba25fe7e108d43e&imgtype=0&src=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201610%2F30%2F20161030083724_YEByt.jpeg");
((MyViewHolder)holder).sdv.setImageURI(uri);
((MyViewHolder)holder).tv.setText(list.get(position).getDesc());
Log.i("111111",list+"");
}
@Override
public int getItemCount() {
return list!=null?list.size():0;
}
class MyViewHolder extends RecyclerView.ViewHolder{
SimpleDraweeView sdv;
TextView tv;
public MyViewHolder(View itemView) {
super(itemView);
sdv=itemView.findViewById(R.id.sdv);
tv=itemView.findViewById(R.id.tv);
}
}
}