-
Notifications
You must be signed in to change notification settings - Fork 16
Feature Mvp AutoPager
D edited this page Aug 8, 2018
·
1 revision
1).LoaderModel
2).LoaderAdapter
3).PagerActivity、LoaderLazyFragment、LoaderPresenter、ILoaderView
public class LoaderModel extends BaseModel {
public String title;
...
}
public class LoaderAdapter extends CommonAdapter<LoaderModel> {
public LoaderAdapter(Context context, List<LoaderModel> datas, int layoutId) {
super(context, datas, layoutId);
}
@Override
public void convert(int position, CommonHolder holder, LoaderModel item) {
holder.setText(R.id.tv_title, item.title);
...
}
}
public interface ILoaderView extends IAbsView<LoaderModel> {
}
public class LoaderPresenter extends AbsPresenter<LoaderModel> {
public LoaderPresenter(Context context) { super(context); }
public void getData(int page) {
Params params = new Params(API.MovieTop.rtpType);
params.addParam(API.MovieTop.start, String.valueOf(CommonLoader.PAGE_COUNT * (page - 1)));
params.addParam(API.MovieTop.count, String.valueOf(CommonLoader.PAGE_COUNT));
RxNet.getInstance().get(API.MovieTop.rtpType, params)
.request(new SimpleCallBack<LoaderInfo>() {
@Override
public void onSuccess(LoaderInfo response) {
if (getView() == null) {
return;
}
if (response == null || response.subjects == null) {
getView().setData(new ArrayList<LoaderModel>());
} else {
getView().setData(response.subjects);
}
}
@Override
public void onError(Throwable e) {
if (getView() == null) {
return;
}
getView().loadError();
}
});
}
}
public class LoaderLazyFragment extends AbsLazyFragment<LoaderModel, LoaderPresenter> implements ILoaderView {
@Override
public LoaderPresenter getPresenter() {
return new LoaderPresenter(getActivity().getApplicationContext());
}
@Override
protected MvpView getMvpView() { return this; }
@Override
protected CommonAdapter<LoaderModel> getAdapter() {
return new LoaderAdapter(mContext, new ArrayList<LoaderModel>(), R.layout.adapter_loader);
}
@Override
protected void onLoad(int page) { mPresenter.getData(page); }
}
public class PagerActivity extends AbsFragmentActivity {
@Override
protected List<String> getTitles() {
return Arrays.asList("TITLE0", "TITLE1", "TITLE2", "TITLE3");
}
@Override
protected List<Fragment> getFragments() {
List<Fragment> fragments = new ArrayList<>();
fragments.add(new LoaderLazyFragment());
fragments.add(new LoaderLazyFragment());
fragments.add(new LoaderLazyFragment());
fragments.add(new LoaderLazyFragment());
return fragments;
}
@Override
protected void init() {
super.init();
tlTitle.setText(R.id.tv_title_title, "Pager");
}
}