Rx系列学习之旅(三)--Base基类的实现

(题外话:前两篇作为前提)

一:Activity的Base基类

public abstract class BaseActivity<T extends BasePresenter> extends AppCompatActivity {
    private Unbinder mUnbinder;
    private MyApplication mApplication;
    @Inject
    T mPresenter ;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        LayoutInflaterCompat.setFactory(getLayoutInflater(), new IconicsLayoutInflater(getDelegate()));

        super.onCreate(savedInstanceState);
        setContentView(setLayout());

        mUnbinder = ButterKnife.bind(this);
        this.mApplication = (MyApplication) getApplication();
        setupActivityComponent(mApplication.getAppComponent());
        init();
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(mUnbinder !=Unbinder.EMPTY){

            mUnbinder.unbind();
        }
    }
    public abstract int setLayout();
    public abstract  void setupActivityComponent(AppComponent appComponent);
    public abstract void  init();

}

二:Fragment的Base基类

public  abstract  class BaseFragment<T extends BasePresenter> extends Fragment {
    private Unbinder mUnbinder;
    private MyApplication mApplication;
    private View mRootView;

    @Inject
    T mPresenter ;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         mRootView = inflater.inflate(setLayout(), container, false);
         mUnbinder=  ButterKnife.bind(this, mRootView);
        return mRootView;
    }
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        this.mApplication = (MyApplication) getActivity().getApplication();
        setupActivityComponent(mApplication.getAppComponent());
        init();
    }
    @Override
    public void onDestroy() {
        super.onDestroy();

        if(mUnbinder != Unbinder.EMPTY){
            mUnbinder.unbind();
        }
    }
    public abstract int setLayout();
    public abstract  void setupActivityComponent(AppComponent appComponent);
    public abstract void  init();
}

三:实现Base基类的子类样式

public class RecommendActivity extends BaseActivity<RecommendPresenter> implements RecommendContract.View {
    @Override
    public void showLoading() {
        Toast.makeText(this,"showLoading",Toast.LENGTH_SHORT).show();
    }
    @Override
    public void showError(String msg) {
        Toast.makeText(this,"showError",Toast.LENGTH_SHORT).show();
    }
    @Override
    public void dismissLoading() {
        Toast.makeText(this,"dismissLoading",Toast.LENGTH_SHORT).show();
    }
    @Override
    public void showResult(List<AppInfo> datas) {
        Toast.makeText(this,datas.get(0).getDisplayName().toString(),Toast.LENGTH_SHORT).show();
    }
    @Override
    public void showNodata() {
        Toast.makeText(this,"showNodata",Toast.LENGTH_SHORT).show();
    }
    @Override
    public int setLayout() {
        return R.layout.fragment_recomend;
    }
    @Override
    public void setupActivityComponent(AppComponent appComponent) {
        DaggerRecommendComponent.builder()
                .appComponent(appComponent)
                .recommendModule(new RecommendModule(this))
                .build()
                .inject(this);
    }
    @Override
    public void init() {
        mPresenter.requestDatas();
        Toast.makeText(this,"init",Toast.LENGTH_SHORT).show();
    }
}

public class RecommendFragment extends BaseFragment<RecommendPresenter>  implements RecommendContract.View {
    @Override
    public int setLayout() {
        return R.layout.fragment_recomend;
    }
    @Override
    public void setupActivityComponent(AppComponent appComponent) {

    }
    @Override
    public void init() {
        mPresenter.requestDatas();
    }
    @Override
    public void showResult(List<AppInfo> datas) {
        Toast.makeText(getActivity(),datas.get(0).getDisplayName().toString(),Toast.LENGTH_SHORT).show();
    }
    @Override
    public void showNodata() {

        Toast.makeText(getActivity(),"暂时无数据,请吃完饭再来",Toast.LENGTH_LONG).show();
    }
    @Override
    public void showLoading() {

    }
    @Override
    public void showError(String msg) {
        Toast.makeText(getActivity(),"服务器开小差了:"+msg,Toast.LENGTH_LONG).show();
    }
    @Override
    public void dismissLoading() {

    }
}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值