MVP 모드와 UI 업데이트의 우연한 만남
다음 코드는 Github(https://github.com/fgnna/aidaban)
패키지 경로:
- 뷰 레이어, activity/Fragment 등
-presenter 주도기, 보기층과 데이터층 간의 업무 호출 + 모델 인터랙션 모델 층 인터페이스를 담당하고 모델이 실현해야 할 방법을 정의한다. 예를 들어 하나의 데이터 + 뷰 인터페이스 층 인터페이스를 가져오거나 보기의 textview 층 인터페이스를 업데이트하는 등이다.
- 모델 레이어, 데이터 레이어라고
다음에 나는 모두 세 개의 실체류와 두 개의 인터페이스류가 있다
먼저 주도기:
ChoicePresenter: 주도기에서 한 가지 일만 하고 실례화한 후에 모델에서 첫 페이지의 데이터를 가져와view에 알리고 데이터를 전달합니다
public ChoicePresenter(Context context, ChoiceViewInterface choiceViewInterface)
{
this.mContext = context;
this.mChoiceViewInterface = choiceViewInterface;
this.mChoiceModelInterface = new ChoiceModel();
this.init();
}
//
private void init()
{
new AsyncTask(){
@Override
protected Object doInBackground(Object... params)
{
//
mChoiceViewInterface.initPageData( mChoiceModelInterface.getInitPageData(mContext) );
return null;
}
}.execute(10);
}
ChoiceViewInterface:view 할 일 정의
/**
*
* @param list
*/
public void initPageData(List<ChoiceBean> list);
ChoiceModelInterface: 모델이 해야 할 일을 정의합니다
/**
*
*
* @param context
* @return
*/
public List<ChoiceBean> getInitPageData(Context context);
Choice Model implements Choice Model Interface: 모델 구현 클래스, 역할은 더 이상 말하지 않겠습니다.
@Override
public List<ChoiceBean> getInitPageData(Context context)
{
List<ChoiceBean> data = new ArrayList<ChoiceBean>();
//..............................
return data;
}
ViewpagerChoiceFragment implements ChoiceViewInterface:view층,ChoiceViewInterface 인터페이스를 실현하고 인터페이스 방법을 완성해야 합니다
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// , ,( , )
mListView= (ListView) inflater.inflate(R.layout.viewpager_choice, container, false);
this.mChoicePresenter = new ChoicePresenter(getActivity().getApplicationContext(),this);
return mListView;
}
@Override
public void initPageData(final List<ChoiceBean> list)
{
mChoiceListViewAdapter = new ChoiceListViewAdapter(getActivity().getApplicationContext(),list,mChoicePresenter);
handler.post(new Runnable() {
public void run() {
mListView.setAdapter(mChoiceListViewAdapter );
}
});
}
지금 강조할 수 있는 건ViewpagerChoiceFragment 이view 층의 클래스는onCreate에서 먼저 실례화합니다
주도기, 그리고 구조 방법을 통해
주도기에서 이후의 모든 업무 논리는
주도기가 완성되어 보기와 업무 논리의 분리를 실현하였다.
그리고 주도자는 이view를 초기화할 때 첫 번째 페이지의 데이터를 가져오고 뷰 업데이트를 알리며 뷰에 데이터를 전달해야 한다는 것을 알고 있다. 이때view는 initPageData(final List
이 과정에서 주도기는 전체view와 모델의 중간 부분의 내용을 책임지고 모델이 무엇을 해야 하는지를 정의하고view가 언제 업데이트가 필요한지 알려준다. view와 모델은 모두 독립적으로 자신의 일을 하고 있다. view는 데이터를 어떻게 얻는지 알 필요가 없다. 모델은 데이터만 얻고 결과를 되돌려준다. 그러면 차원 분리, 단일한 직책이 현실화되고그리고 테스트와 유지보수 코드는 더욱 쉽고 특히 여러 사람이 합작하여 개발하는 상황에 적합하다.
마지막으로 동작 감청 사건과 같은 인터페이스도view층이 아닌 주도기에서 이루어져야 한다는 점을 덧붙였다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.