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)用外部類(lèi) 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 Studio 3.0 Gradle 配置變更
這篇文章主要介紹了Android Studio 3.0 Gradle 配置變更的相關(guān)知識(shí),即多渠道打包變更和更改打包命名及路徑的代碼,感興趣的朋友跟隨腳本之家小編一起看看吧2018-03-03Android中的Button自定義點(diǎn)擊效果實(shí)例代碼
Android中的Button自定義點(diǎn)擊效果實(shí)例代碼,需要的朋友可以參考一下2013-05-05android編程實(shí)現(xiàn)添加文本內(nèi)容到sqlite表中的方法
這篇文章主要介紹了android編程實(shí)現(xiàn)添加文本內(nèi)容到sqlite表中的方法,結(jié)合實(shí)例較為詳細(xì)的分析了Android針對(duì)txt文本文件的讀取及SQL數(shù)據(jù)庫(kù)操作的相關(guān)技巧,需要的朋友可以參考下2015-11-11Android實(shí)現(xiàn)截圖分享qq 微信功能
在日常生活中,經(jīng)常用到qq,微信截圖分享功能,今天小編通過(guò)本文給大家介紹Android實(shí)現(xiàn)截圖分享qq 微信功能,具體實(shí)現(xiàn)代碼大家參考下本文2017-12-12Android編程之播放器MediaPlayer實(shí)現(xiàn)均衡器效果示例
這篇文章主要介紹了Android編程之播放器MediaPlayer實(shí)現(xiàn)均衡器效果,結(jié)合具體實(shí)例形式分析了Android調(diào)用MediaPlayer相關(guān)API構(gòu)造均衡器的具體步驟與相關(guān)功能實(shí)現(xiàn)方法,需要的朋友可以參考下2017-08-08flutter PageView實(shí)現(xiàn)左右滑動(dòng)切換視圖
這篇文章主要為大家詳細(xì)介紹了flutter PageView實(shí)現(xiàn)左右滑動(dòng)切換視圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07Android進(jìn)程通信之Messenger和AIDL使用詳解
本篇文章主要介紹了Android進(jìn)程通信之Messenger和AIDL使用詳解,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01