Android登錄代碼MVP架構(gòu)詳解
登錄代碼MVP架構(gòu)的具體實(shí)現(xiàn),分享給大家。
MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener, Mvp.fff {
private EditText mUsername;
private EditText mPassword;
private Button login;
private ProgressDialog mProgressDialog;
private Mvp mMvp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
mMvp = new Mvp(this);
}
private void initView() {
mUsername = (EditText) findViewById(R.id.username);
mPassword = (EditText) findViewById(R.id.password);
login = (Button) findViewById(R.id.login);
login.setOnClickListener(this);
//動(dòng)態(tài)的創(chuàng)建一個(gè)進(jìn)度條
mProgressDialog = new ProgressDialog(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.login:
String user = mUsername.getText().toString();
String pass = mPassword.getText().toString();
final User users = new User();
users.username=user;
users.password=pass;
Boolean empty = mMvp.isEmpty(users);
if (empty){
mProgressDialog.show();
mMvp.isLogin(users);
}else {
Toast.makeText(MainActivity.this, "輸入不能為空", Toast.LENGTH_SHORT).show();
return;
}
break;
}
}
@Override
public void success() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mProgressDialog.dismiss();
Toast.makeText(MainActivity.this, "歡迎回來(lái),思密達(dá)", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void doil() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mProgressDialog.dismiss();
Toast.makeText(MainActivity.this, "登錄失敗,賬號(hào)密碼有問(wèn)題", Toast.LENGTH_SHORT).show();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
mMvp=null;
}
}
UserLogin.java
public class UserLogin { //MVC Controller層
public boolean login(User users){
SystemClock.sleep(1000);
if ("frq".equals(users.username)&&"frq".equals(users.password)){
return true;
}else {
return false;
}
}
}
Mvp.java
public class Mvp { //MVP Precenter層
public Mvp(fff fff) {
mFff = fff;
}
public Boolean isEmpty(User users){
if (TextUtils.isEmpty(users.username) || TextUtils.isEmpty(users.password)){
return false;
}else {
return true;
}
}
public void isLogin(final User users){
new Thread(){
@Override
public void run() {
UserLogin login = new UserLogin();
boolean b = login.login(users);
if (b){
mFff.success();
}else {
mFff.doil();
}
}
}.start();
}
public interface fff{
void success();
void doil();
}
private fff mFff;
}
===========================================
public class Precenter {
public Precenter(fff fff) {
mFff = fff;
}
public void As(String urlString){
new AsyncTask<String, Void, ArrayList<FirstBean.ResultBean>>() {
@Override
protected ArrayList<FirstBean.ResultBean> doInBackground(String... strings) {
String s = new HttpUrl().toString(strings[0]); //調(diào)用外部類
FirstBean firstBean = new Gson().fromJson(s, FirstBean.class); //gson解析
if (firstBean!=null){
return (ArrayList<FirstBean.ResultBean>) firstBean.getResult();
}
return null;
}
@Override
protected void onPostExecute(ArrayList<FirstBean.ResultBean> resultBeans) {
super.onPostExecute(resultBeans);
if (resultBeans!=null){
mFff.success(resultBeans);
}else {
mFff.bai();
}
}
}.execute(urlString);
}
public interface fff{
void success(ArrayList<FirstBean.ResultBean> resultBeans);
void bai();
};
private fff mFff;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android畫(huà)板開(kāi)發(fā)之撤銷(xiāo)反撤銷(xiāo)功能
這篇文章主要為大家詳細(xì)介紹了Android畫(huà)板開(kāi)發(fā)之撤銷(xiāo),反撤銷(xiāo)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Android 實(shí)現(xiàn)無(wú)網(wǎng)絡(luò)頁(yè)面切換的示例代碼
本篇文章主要介紹了Android 實(shí)現(xiàn)無(wú)網(wǎng)絡(luò)頁(yè)面切換的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
Android RecyclerView下拉刷新和上拉加載更多
這篇文章主要為大家詳細(xì)介紹了Android RecyclerView下拉刷新和上拉加載更多,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Android開(kāi)發(fā)之使用ExifInterface獲取拍照后的圖片屬性
這篇文章主要介紹了Android開(kāi)發(fā)之使用ExifInterface獲取拍照后的圖片屬性,較為詳細(xì)的分析了ExifInterface類操作圖片的具體使用技巧,需要的朋友可以參考下2016-01-01
Android中buildToolVersion與CompileSdkVersion的區(qū)別
今天小編就為大家分享一篇關(guān)于Android中buildToolVersion與CompileSdkVersion的區(qū)別,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
Android實(shí)現(xiàn)在xml文件中引用自定義View的方法分析
這篇文章主要介紹了Android實(shí)現(xiàn)在xml文件中引用自定義View的方法,結(jié)合實(shí)例形式分析了Android自定義view的實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-06-06
解決android studio中使用monitor工具無(wú)法打開(kāi)data文件夾問(wèn)題
這篇文章主要介紹了解決android studio中使用monitor工具無(wú)法打開(kāi)data文件夾問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Android自定義ViewGroup實(shí)現(xiàn)標(biāo)簽浮動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android自定義ViewGroup實(shí)現(xiàn)標(biāo)簽浮動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06

