MVP-------簡單邏輯--------難度1
view層
package com.bawei.mymvp.mvp2.view;
/**
* view層介面,內部兩個回撥方法
* 第一個成功,第二個失敗
* @param <T>
*/
public interface IView<T> {
void success(T data);
void fail(String msg);
}
presanter層
package com.bawei.mymvp.mvp2.presemter;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.bawei.mymvp.mvp2.NetUtils;
import com.bawei.mymvp.mvp2.User;
import com.bawei.mymvp.mvp2.view.IView;
public class LoginPresenter {
/**
* 持有view的例項
*/
private IView mIView;
public LoginPresenter(@NonNull IView iView) {
mIView = iView;
}
public void submit(User user){
if(checkName(user.getName()) && checkPw(user.getPw())){
//進行網路請求
boolean loginResult = NetUtils.loginApi(user);
//拿到結果後
if (loginResult){
//通過view的例項,把資料回撥給view
mIView.success("");
}else{
//通過view的例項,把資料回撥給view
mIView.fail("失敗");
}
}else{
//通過view的例項,把資料回撥給view
mIView.fail("使用者名稱密碼錯");
}
}
public void detachView(){
mIView = null;
}
private boolean checkName(String name){
return !TextUtils.isEmpty(name);
}
private boolean checkPw(String pw){
return (!TextUtils.isEmpty(pw) && pw.length()>=6);
}
}
Activity
package com.bawei.mymvp.mvp2.view;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.bawei.mymvp.R;
import com.bawei.mymvp.mvp2.presemter.LoginPresenter;
import com.bawei.mymvp.mvp2.User;
public class MvpActivity extends Activity implements View.OnClickListener, IView {
EditText mEtName, mEtPw;
LoginPresenter mLoginPresenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mvp);
initView();
//建立一個Presenter例項
initPresenter();
}
/**
* 繫結Presenter
*/
private void initPresenter() {
//把view傳給presenter進行繫結
mLoginPresenter = new LoginPresenter(this);
}
private void initView() {
mEtName = findViewById(R.id.et_name);
mEtPw = findViewById(R.id.et_pw);
mEtPw.invalidate();
findViewById(R.id.button_login).setOnClickListener(this);
}
@Override
public void onClick(View view) {
int id = view.getId();
switch (id) {
case R.id.button_login:
User user = new User(mEtName.getText().toString(), mEtPw.getText().toString());
//通過presenter的例項,呼叫presenter中的方法
mLoginPresenter.submit(user);
break;
default:
break;
}
}
/**
* 在Activity結束的時候解綁Presenter
*/
@Override
protected void onDestroy() {
super.onDestroy();
mLoginPresenter.detachView();
}
@Override
public void success(Object data) {
//接受到了結果,進行資料展示
Toast.makeText(this, "success", Toast.LENGTH_SHORT).show();
}
@Override
public void fail(String msg) {
//接受到了結果,進行資料展示
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
}
網路工具類參考mvp難度2中
package com.bawei.mymvp.mvp2;
import android.os.SystemClock;
public class NetUtils {
public static boolean loginApi(User user){
SystemClock.sleep(2000);
if(user.getName().equals("dj") && user.getPw().equals("123456")){
//TODO:這裡最終需用真正的介面
return true;
}
return false;
}
}
bean類自己封裝
在這裡插入程式碼片
相關文章
- MVP -------簡單邏輯程式碼 -------難度2-----其中通過Handler請求資料MVP
- 非常簡單的匯出 CSV 表格邏輯
- 【React】戲說元件式百度圖表的由來及簡單邏輯React元件
- 240815-PostgreSQL自帶邏輯複製簡單使用SQL
- vue element ui 簡單表格下鑽邏輯淺記VueUI
- 邏輯式程式語言極簡實現(使用C#) - 1. 邏輯式程式語言介紹C#
- SSO單點登入邏輯
- 不止“簡單”和“困難”,遊戲難度竟然還可以這樣劃分?遊戲
- cocos-creator 指令碼邏輯-1指令碼
- Golang 單元測試 - 邏輯層Golang
- SAP Fiori Elements List Report 列表寬度決定邏輯的單步除錯除錯
- Django基於類的增刪改查,簡單邏輯都不用寫Django
- onethink後臺選單管理,選單邏輯錯誤
- 資料庫 Mysql 邏輯架構簡介資料庫MySql架構
- 邏輯迴歸:使用Python的簡化方法邏輯迴歸Python
- MySQL提升筆記(1):MySQL邏輯架構MySql筆記架構
- 精準測試最為簡單的問題之一:資料與邏輯
- 簡單的文字編輯
- Centos8中建立LVM精簡邏輯卷CentOSLVM
- ASP.NET Razor – VB 邏輯條件簡介ASP.NET
- Vue主要原理最簡實現與邏輯梳理Vue
- 邏輯題
- 簡單進度條
- MySQL調優篇 | 邏輯架構解讀(1)MySql架構
- 分類演算法(1)-LR邏輯迴歸演算法邏輯迴歸
- 基於UNIX系統,邏輯故障的資料災難解讀
- 邏輯難理解版本的輪播圖(實現無縫滾動)
- dotnet 程式碼最佳化 聊聊邏輯圈複雜度複雜度
- ASP.NET Razor – C# 邏輯條件簡介ASP.NETC#
- 一次簡單易懂的多型重構實踐,讓你理解條件邏輯多型
- 簡單的幾條Insert語句引起的邏輯Standby應用延遲的診斷
- 邏輯運算子
- 邏輯推理20201028
- 量子邏輯閘
- 邏輯迴歸邏輯迴歸
- java邏輯控制Java
- 數位電路(1)- 邏輯代數第一講
- 邏輯式程式語言極簡實現(使用C#) - 2. 一道邏輯題:誰是凶手C#