mvp是什么? 这个我就不解释了!!!!自己google、百度吧。。。
mvp的简单使用:
一、首先看看demo中唯一的一个布局文件吧:(activity_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" >
<EditText
android:id="@+id/etAccount"
android:layout_width="match_parent"
android:layout_height="50dip"
android:layout_marginTop="20dip"
android:hint="请输入账号" />
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="50dip"
android:layout_marginTop="5dip"
android:hint="请输入密码" />
<Button
android:id="@+id/btnLogin"
android:layout_width="match_parent"
android:layout_height="50dip"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="10dip"
android:text="登录" />
</LinearLayout>
二、看看activity和presenter的接口吧:(OnLoginViewListener.java)
package com.stormdzh.mvpdemo;
public interface OnLoginViewListener {
public void onLoginErrorInfo(int code ,String devMsg,String friendlyMsg);
public void onLoginSuc();
}
三、看看presenter 的代码吧(第一个是:LoginPresenter.java ;第二个是:LoginPresenterImp.java)
package com.stormdzh.mvpdemo.presenter;
public interface LoginPresenter {
public void loginToServer(String userName,String password);
public void onLoginState(boolean isSuc,String content);
}
package com.stormdzh.mvpdemo.presenter.imp;
import android.os.Handler;
import android.os.Message;
import com.stormdzh.mvpdemo.OnLoginViewListener;
import com.stormdzh.mvpdemo.presenter.LoginPresenter;
public class LoginPresenterImp extends Handler implements LoginPresenter{
private OnLoginViewListener lListener;
public LoginPresenterImp(OnLoginViewListener lListener)
{
this.lListener=lListener;
}
@Override
public void loginToServer(String userName, String password) {
}
//这里可以写个方法控制 加载对话框
@Override
public void onLoginState(boolean isSuc, String content) {
Message msg=Message.obtain();
msg.what=0;
msg.obj=isSuc;
sendMessage(msg);
}
private String getHandleFriendlyMsg() {
return null;
}
private String getHandleDevMsg() {
return null;
}
private int getHandleCode() {
return 0;
}
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 0:
if(lListener!=null)
if((Boolean)msg.obj)
lListener.onLoginSuc();
else
{
int code=getHandleCode();
String devMsg=getHandleDevMsg();
String friendlyMsg=getHandleFriendlyMsg();
lListener.onLoginErrorInfo(code, devMsg, friendlyMsg);
}
break;
}
}
}
四、看看model层的实现吧:(第一个:LoginManager.java ;第二个是:LoginManagerImp.java)
package com.stormdzh.mvpdemo.manager;
public interface LoginManager {
public void login(String account ,String psw);
}
package com.stormdzh.mvpdemo.manager.imp;
import com.stormdzh.mvpdemo.manager.LoginManager;
import com.stormdzh.mvpdemo.presenter.LoginPresenter;
public class LoginManagerImp implements LoginManager{
private final boolean httpRequest_Ok=true;
private LoginPresenter pListener;
public LoginManagerImp(LoginPresenter pListener)
{
this.pListener=pListener;
}
@Override
public void login(String account, String psw) {
httpRequest();
pListener.onLoginState(httpRequest_Ok, "服务器返回的其余信息");
}
private void httpRequest() {
}
}
五、就差最后的activity类了(MainActivity.java)
package com.stormdzh.mvpdemo;
import android.os.Bundle;
import android.app.Activity;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements OnLoginViewListener {
private Button btnLogin;
private EditText etPassword,etAccount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initListener();
}
private void initViews() {
btnLogin=(Button) findViewById(R.id.btnLogin);
etAccount=(EditText) findViewById(R.id.etAccount);
etPassword=(EditText) findViewById(R.id.etPassword);
}
private void initListener() {
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickLogin();
}
});
}
protected void clickLogin() {
if(!needLogin())
return;
}
private boolean needLogin() {
if((!TextUtils.isEmpty(etAccount.getText()))&&(!TextUtils.isEmpty(etPassword.getText())))
{
return true;
}
return false;
}
@Override
public void onLoginErrorInfo(int code, String devMsg, String friendlyMsg) {
//登录错误的处理
}
@Override
public void onLoginSuc() {
//登录成功的处理
}
}
最后附上demo下载地址:http://download.csdn.net/detail/u010052279/9500303