(Base 시리즈 2)BaseMVPACtivityBaseViewBasePresenter 패키지
3867 단어 android
public abstract class BaseMVPActivity extends BaseActivity implements BaseView {
protected P mPresenter;
}
간단히 말하자면 Base MVPACtivity는 BaseActivity에서 직접 계승하면 된다. 단지 하나의 속성, 일반적인 Presenter가 있고 BaseView를 실현했다. 먼저 BaseView 코드를 보자.
public interface BaseView {
void showLoadingDialog();
void showLoadingDialog(String msg, boolean cancelable);
void dismissLoadingDialog();
void showErrorDialog();
void showErrorDialog(String title, String subtitle, boolean cancelable, boolean isConnected);
void dismissErrorDialog();
void addDisposable(Disposable disposable);
void addObserver(Observer observer);
}
BaseView 코드도 간단합니다. 모든 페이지가 필요로 하는 일반적인 방법입니다. 방법명은BaseActivity와 일치하면 됩니다. 그러면 현식override가 필요하지 않고 presenter에서view를 진행합니다.xxxx ()면 됩니다. 최종적으로 호출된 방법은BaseActivity의 방법일 것입니다. BasePresenter 코드를 다시 한 번 보십시오.
public interface BasePresenter {
K attachView(T view);
}
하나의attchView 방법으로BaseView에서 계승된 일반 T 파라미터를 받아들이고BasePresenter에서 계승된 K를 되돌려줍니다. 사실 실제적으로 되돌아오는 것은 클래스 자신을 실현하는 것입니다. 다음은 대략적인 사용 예시를 보겠습니다.
public interface PadGoodsDetailContact {
interface View extends BaseView {
void onLoadGoodsDetailInfoSuccess(ProDetailInfo proDetailInfo);
void onGoodsNoSold();
}
interface Presenter extends BasePresenter {
void loadGoodsDetailInfo(int channelId);
}
}
이것은 상품의 상세한 정보를 얻는 모듈의 예이다. Contact에는 하나의 View와 하나의 Presenter가 각각 BaseView,BasePresenter에서 계승되어 구체적인 방법과 파라미터를 정의하고 다음은 View를 실현하는 부분을 본다.
public class PadGoodsDetailActivity extends BaseMVPActivity implements PadGoodsDetailContact.View{
...
@Override
protected int getLayout() {
BaseActivity setContent ,
return R.layout.activity_pad_goods_detail;
}
@Override
protected void initData(Bundle savedInstanceState) {
mPresenter = new PadGoodsDetailPresenter().attachView(this);
...
}
...
@Override
public void onLoadGoodsDetailInfoSuccess(ProDetailInfo proDetailInfo) {
...
}
...
@Override
public void onGoodsNoSold() {
...
}
}
많은 구체적인 코드를 생략했지만 대체적으로 이렇다. initData()는 지난 편에서 초기화 작업을 하기 위해 특별히 남겨 두었기 때문에 mPresenter에 가장 먼저 값을 부여한다.즉attchView의 반환값이다.PadGoodsDetailPresenter의 구체적인 코드를 본다
public class PadGoodsDetailPresenter implements PadGoodsDetailContact.Presenter {
private PadGoodsDetailContact.View view;
@Override
public void loadGoodsDetailInfo(int channelId) {
view.showLoadingDialog();
view.dismissLoadingDialog();
...
view.onLoadGoodsDetailInfoSuccess(xxx);
view.onGoodsNoSold();
}
@Override
public PadGoodsDetailContact.Presenter attachView(PadGoodsDetailContact.View view) {
this.view = view;
return this;
}
}
같은 생략 부분은 구체적인 코드와 무관하지만 관건적인 부분은 이미 모두 있다. 이로써 완전한 작은 MVP 구조가 모두 생겼다. 총괄적으로 말하자면BaseActivity,BaseMVPactivity,BaseView,BasePresenter를 봉한 다음에 구체적인 모듈의Contact를 쓰고 VIew와Presenter를 포함한다.그리고 이 모듈의Activity는BaseMVPactivity에서 계승되어Contactt를 실현합니다.View, Contact를 위해 모듈의 Presenter를 작성합니다.Presenter, 이 Presenter에는 하나의 Contact가 포함되어 있습니다.TchView의 구성원 변수,attchView에서 이 변수를 부여하고 이Presenter의 실례, 즉 Base MVPactivity의 mPresenter를 되돌려줍니다. 대략적인 절차는 이렇습니다. 묘사가 잘 되지 않지만 위의 코드 예시와 결합하면 쉽게 알 수 있다고 믿습니다. OK, 기록이 완성되고 게으른 암을 이겨내는 길에 한 걸음 더 나아갔다고 믿습니다.다음 편, 나는 베이스 Fragment, 베이스 MVP Fragment를 하나 더 쓸 생각이다. 사실 방법은 모두 같다. 그럼, 다음 편에서 보자. 끽.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.