例としてはAndroidのMVP
単純な要求の気象機能は、AndroidのMVPを使用する方法を示しています
結果のプレビュー
レディー
MVPプロセス
説明:
ステップ1:UIビュー参照プレゼンター、方法を実装
ステップ2:モデルプレゼンター呼び出しは、モデルの特定の論理行く
。ステップ3:モデルロジック実装、プレゼンターコールバックメソッドの
ステップ4:UI、コールバックメソッドビューに表示プレゼンターコールバック、即ちバック
Gradleの文書
1。
コンパイル「com.loopj.android:android-async-http:1.4.9」
の指示:非同期HTTPを使用してネットワークを要請
ディレクトリ構造
VのMVP
MainView.java
/ **
* WuXiaolong ON 2015年9月23日によって作成されます。
必要です*ビジネスの処理方法
* /
public interface MainView {
void showData(MainModelBean mainModelBean);
void showProgress();
void hideProgress();
}
MainActivity
/ **
* WuXiaolong ON 2015年9月23日によって作成されます。
アクティビティ/フラグメントによって実施される方法で*ビュー、プレゼンターへの参照が含まれています
* /
public class MainActivity extends AppCompatActivity implements MainView {
private ProgressBar mProgressBar;
private TextView text;
private MainPresenter mMainPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
text = (TextView) findViewById(R.id.text);
mProgressBar = (ProgressBar) findViewById(R.id.mProgressBar);
mMainPresenter = new MainPresenter(this);
//制造延迟效果
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mMainPresenter.loadData();
}
}, 2000);
}
@Override
protected void onDestroy() {
mMainPresenter.detachView();
super.onDestroy();
}
@Override
public void showData(MainModelBean mainModelBean) {
String showData = getResources().getString(R.string.city) + mainModelBean.getCity()
+ getResources().getString(R.string.wd) + mainModelBean.getWd()
+ getResources().getString(R.string.ws) + mainModelBean.getWs()
+ getResources().getString(R.string.time) + mainModelBean.getTime();
text.setText(showData);
}
@Override
public void showProgress() {
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void hideProgress() {
mProgressBar.setVisibility(View.GONE);
}
}
PのMVP
MainPresenter.java
/ **
* WuXiaolong ON 2015年9月23日によって作成されます。
*ビュー層に戻っモデル層、からデータを取得ブリッジビューとモデル、
* /
public class MainPresenter implements Presenter<MainView>, IMainPresenter {
private MainView mMainView;
private MainModel mMainModel;
public MainPresenter(MainView view) {
attachView(view);
mMainModel = new MainModel(this);
}
@Override
public void attachView(MainView view) {
this.mMainView = view;
}
@Override
public void detachView() {
this.mMainView = null;
}
public void loadData() {
mMainView.showProgress();
mMainModel.loadData();
}
@Override
public void loadDataSuccess(MainModelBean mainModelBean) {
mMainView.showData(mainModelBean);
mMainView.hideProgress();
}
@Override
public void loadDataFailure() {
mMainView.hideProgress();
}
}
プレゼンター
public interface Presenter<V> {
void attachView(V view);
void detachView();
}
IMainPresenter
/ **
* WuXiaolong ON 2015年9月23日によって作成されます。
*このインタフェース機能はモデルに接続されています
* /
public interface IMainPresenter {
void loadDataSuccess(MainModelBean mainModelBean);
void loadDataFailure();
}
MのMVP
MainModel
/ **
* WuXiaolong ON 2015年9月23日によって作成されます。
*データを操作し、格納、検索の責任者など、具体的な処理操作、
* /
public class MainModel {
IMainPresenter mIMainPresenter;
public MainModel(IMainPresenter iMainPresenter) {
this.mIMainPresenter = iMainPresenter;
}
public void loadData() {
AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
asyncHttpClient.get("http://www.weather.com.cn/adat/sk/101010100.html", new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
super.onSuccess(statusCode, headers, response);
try {
MainModelBean mainModelBean = new MainModelBean();
JSONObject weatherinfo = response.getJSONObject("weatherinfo");
mainModelBean.setCity(weatherinfo.getString("city"));
mainModelBean.setWd(weatherinfo.getString("WD"));
mainModelBean.setWs(weatherinfo.getString("WS"));
mainModelBean.setTime(weatherinfo.getString("time"));
mIMainPresenter.loadDataSuccess(mainModelBean);
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
super.onFailure(statusCode, headers, throwable, errorResponse);
mIMainPresenter.loadDataFailure();
}
});
}
}
MainModelBean
public class MainModelBean {
private String city;
private String wd;
private String ws;
private String time;
//此处省略get和set方法
}
ソースアドレス
https://github.com/WuXiaolong/AndroidMVPSample
概要
MVCパターンの
ビュー(ビュー):ユーザーインターフェース。
コントローラ(コントローラ):ビジネス・ロジック・
モデル(モデル):データ・ストレージ
へのビューコントローラの転送命令
コントローラは、ビジネスロジックを完了は、モデルの状態を変更するために必要な
モデルがビューに新しいデータを送信し、ユーザーからのフィードバック
MVPパターン
ビジネス・ロジックを処理し、MVCパターン層ビュー、MVCモデルに対応するプレゼンタコントローラ層の活性にMVP、および断片を用いて。各アクティビティデータを処理した後、モデルを得るされ、対応するプレゼンタを有します。
MVVMパターンは
MVPパターンと実質的に同一、プレゼンターViewModelに名前が変更されます。唯一の違いは、双方向バインディング(データバインディング)を使用することである:ビュー変更が自動的にビューモデルに反映され、およびその逆。