mvp框架的简单使用

                mvp框架的简单使用

1.概述:mvp现在是最常用的一种开发框架,以下是一个仿登录的操作
2.思路:net包仿网络请求,
bean包user数据
model包定义接口是业务模型层
view包定义接口是只完成页面中的控件的直接操作
presenter拿到model对象和View对象进行操作
mainactivity操作视图
3.实现代码:
net包
public class NetUtils {
public static void getNetData(){
SystemClock.sleep(2000);
}
}
bean包登录的用户名和密码
public class UserInfo {
public String name;
public String pass;

public UserInfo(String pass, String name) {
    this.pass = pass;
    this.name = name;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getPass() {
    return pass;
}

public void setPass(String pass) {
    this.pass = pass;
}

}
model包
业务模型层
public interface IUserLonginModel {
//登录方法
public void login(String name,String pass);
//保存密码方法
public void saveUserInfo(String name,String pass);
//得到用户信息并返回方法
public UserInfo getUserInfo();
}
在建一个类实现接口
public class UserLoginModel implements IUserLonginModel{
Context context;
SharedPreferences sp;
SharedPreferences.Editor editor;
public UserLoginModel(Context context) {
this.context = context;
sp=context.getSharedPreferences(“user”,Context.MODE_PRIVATE);
editor=sp.edit();
}

@Override
public void login(String name, String pass) {
    NetUtils.getNetData();
}

@Override
public void saveUserInfo(String name, String pass) {
    editor.putString("name",name);
    editor.putString("pass",pass);
    editor.commit();
}

@Override
public UserInfo getUserInfo() {
    String name=sp.getString("name","");
    String pass=sp.getString("pass","");
    UserInfo user=new UserInfo(name,pass);
    return user;
}

}
//view包只完成页面中的控件的直接操作
public interface IUserLoginView {
public void setTextName(String name);
public void setTextPass(String pass);
public String getTextName();
public String getTextPass();
}
//最后在mainactivity
package com.example.day1_mvp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.example.day1_mvp.presenter.LoginPresenter;
import com.example.day1_mvp.view.IUserLoginView;

public class MainActivity extends AppCompatActivity implements IUserLoginView {
EditText et_name,et_pass;
Button btn;
LoginPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}

private void initView() {
    et_name= (EditText) findViewById(R.id.et_name);
    et_pass= (EditText) findViewById(R.id.et_pass);
    presenter=new LoginPresenter(this,this);
    presenter.showUserInfo();
    btn= (Button) findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            presenter.login();
        }
    });
}

@Override
public void setTextName(String name) {
   et_name.setText(name);
}

@Override
public void setTextPass(String pass) {
    et_pass.setText(pass);
}

@Override
public String getTextName() {
    return et_name.getText().toString();
}

@Override
public String getTextPass() {
    return et_pass.getText().toString();
}

}
//布局

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我给您举一个 Android MVP 框架实例。 假设我们要开发一个简单的登录界面,包含一个用户名输入框、一个密码输入框和一个登录按钮。我们可以按照 MVP 框架的方式来组织代码。 首先,我们定义一个 View 接口,包含了用户界面的一些方法,例如显示错误信息、显示登录成功等。 ```java public interface LoginView { void showProgress(); void hideProgress(); void setUsernameError(); void setPasswordError(); void navigateToHome(); } ``` 然后,我们定义一个 Presenter 接口,包含了处理用户输入的一些方法,例如验证用户名密码、进行登录等。 ```java public interface LoginPresenter { void validateCredentials(String username, String password); void onDestroy(); } ``` 接下来,我们实现 Presenter 接口,并在其中处理逻辑。 ```java public class LoginPresenterImpl implements LoginPresenter { private LoginView view; public LoginPresenterImpl(LoginView view) { this.view = view; } @Override public void validateCredentials(String username, String password) { if (TextUtils.isEmpty(username)) { view.setUsernameError(); return; } if (TextUtils.isEmpty(password)) { view.setPasswordError(); return; } // 调用模型层的方法验证用户名密码 boolean isValid = UserModel.validateUser(username, password); if (isValid) { view.showProgress(); view.navigateToHome(); } else { view.hideProgress(); view.setUsernameError(); view.setPasswordError(); } } @Override public void onDestroy() { view = null; } } ``` 最后,我们实现 Activity 中的 View 接口,并将 Presenter 和 View 进行绑定。 ```java public class LoginActivity extends AppCompatActivity implements LoginView { private EditText etUsername; private EditText etPassword; private Button btnLogin; private ProgressBar progressBar; private LoginPresenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); etUsername = findViewById(R.id.et_username); etPassword = findViewById(R.id.et_password); btnLogin = findViewById(R.id.btn_login); progressBar = findViewById(R.id.progress_bar); presenter = new LoginPresenterImpl(this); btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String username = etUsername.getText().toString(); String password = etPassword.getText().toString(); presenter.validateCredentials(username, password); } }); } @Override public void showProgress() { progressBar.setVisibility(View.VISIBLE); } @Override public void hideProgress() { progressBar.setVisibility(View.GONE); } @Override public void setUsernameError() { etUsername.setError("用户名不能为空"); } @Override public void setPasswordError() { etPassword.setError("密码不能为空"); } @Override public void navigateToHome() { Intent intent = new Intent(this, HomeActivity.class); startActivity(intent); finish(); } @Override protected void onDestroy() { super.onDestroy(); presenter.onDestroy(); } } ``` 以上就是一个简单的 Android MVP 框架实例,其中 View 接口定义了用户界面的一些方法,Presenter 接口定义了处理用户输入的一些方法,Presenter 实现了 Presenter 接口中的方法并在其中处理逻辑,Activity 实现了 View 接口中的方法并将 Presenter 和 View 进行了绑定。通过这种方式,我们可以将不同层的代码分离开来,使得代码更加清晰、易于维护和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值