Skip to content

Feature Mvp AutoPager

D edited this page Aug 8, 2018 · 1 revision

Screenshot

Prepare

    1).LoaderModel
    2).LoaderAdapter
    3).PagerActivityLoaderLazyFragmentLoaderPresenterILoaderView

1.LoaderModel

public class LoaderModel extends BaseModel {
    public String title;
    ...
}

2.LoaderAdapter

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);
        ...
    }
}

3.ILoaderView

public interface ILoaderView extends IAbsView<LoaderModel> {

}

4.LoaderPresenter

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();
                    }
                });
    }
}

5.LoaderLazyFragment

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); }
}

6.PagerActivity

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");
    }
}