原来mvp模式如此简单
文件目录:
MainPresenter.java //接口,用于保存实现类的引用
MainPresenterImp.java //上面接口的具体实现类 , 实现逻辑的单元
MainView.java //主View需要做的操作,需要在MainPresenterImp(presenter)中的反应的接口
MainActivity.java//主Activity
MainPresenter.java
public interface MainPresenter {
public void doLogin(String name, String psw);
}
MainPresenterImp.java
import android.text.TextUtils;
public class MainPresenterImp implements MainPresenter {
private MainView mainView;
public MainPresenterImp(MainView mainView) {
this.mainView = mainView;
}
@Override
public void doLogin(String name, String psw) {
boolean isOk = TextUtils.isEmpty(name) || TextUtils.isEmpty(psw);
if (isOk) {
mainView.showError();
} else {
mainView.showSuccessful();
}
}
}
MainView.java
public interface MainView {
public void showError();
public void showSuccessful();
}
MainActivity.java
public class MainActivity extends Activity implements OnClickListener, MainView {
private MainPresenter presenter;
private Button loginBtn;
private EditText nameEdit;
private EditText pswEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loginBtn = (Button) findViewById(R.id.loginBtn);
nameEdit = (EditText) findViewById(R.id.nameEdit);
pswEdit = (EditText) findViewById(R.id.pswEdit);
loginBtn.setOnClickListener(this);
presenter = new MainPresenterImp(this);
}
@Override
public void onClick(View v) {
presenter.doLogin(nameEdit.getText().toString(), pswEdit.getText()
.toString());
}
@Override
public void showError() {
Toast.makeText(this, "不能为空", 0).show();
}
@Override
public void showSuccessful() {
Toast.makeText(this, "登陆成功", 0).show();
}
}
layout xml
acitivity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<EditText
android:id="@+id/nameEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="name" />
<EditText
android:id="@+id/pswEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="psw" />
<Button
android:id="@+id/loginBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="login!" />
</LinearLayout>