mvp框架的實現( 最簡陋版 )
阿新 • • 發佈:2018-12-15
第一篇(僅僅只是雛形)
-
首先展示包結構
2.我們首先要清楚mvp實現的方式
MVP把Activity中的UI邏輯抽象成View介面,把業務邏輯抽象成Presenter介面,Model類還是原來的Model。
Activity中的操作public class MainActivity extends AppCompatActivity implements View.OnClickListener,BasicLogin { private EditText mobile,password; private Button butLogin; private MyPresent myPresent; private Dao dao; private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 mobile = (EditText) findViewById(R.id.mobile); password = (EditText) findViewById(R.id.password); butLogin = (Button) findViewById(R.id.but_login); dao = new Dao(MainActivity.this); butLogin.setOnClickListener(this); Cursor query = dao.query("shuju", null, null, null, null, null, null); if (query.moveToFirst()){ /* do { String username = query.getString(query.getColumnIndex("username")); String password = query.getString(query.getColumnIndex("password")); }while(query.moveToNext());*/ startActivity(new Intent(MainActivity.this,Main2Activity.class)); finish(); } } @Override public void onClick(View v) { String mobile = this.mobile.getText().toString().trim(); String pwd = this.password.getText().toString().trim(); if (mobile.equals("")||pwd.equals("")){ Toast.makeText(MainActivity.this,"不可以為空",Toast.LENGTH_SHORT).show(); return; } myPresent = new MyPresent(this,MainActivity.this); myPresent.login(mobile,pwd); } @Override public void callBack(User data , Context context) { Toast.makeText(getBaseContext(),"歡迎"+data.getData().getUsername()+"登入",Toast.LENGTH_LONG).show(); intent = new Intent(MainActivity.this,Main2Activity.class); String keys = data.getData().getUsername(); intent.putExtra("keys",keys); startActivity(intent); } }
MyPresent
public class MyPresent { private BasicLogin dataCall; private Context context; private Dao dao; public MyPresent(BasicLogin dataCall, Context context){ this.dataCall = dataCall; this.context = context; } private Handler mHandler = new Handler(Looper.getMainLooper()){ @Override public void handleMessage(Message msg) { User loginData = (User) msg.obj; Dao dao = new Dao(context); //資料庫 ContentValues values = new ContentValues(); values.put("username",loginData.getData().getUsername()); values.put("password",loginData.getData().getPassword()); dao.insert("shuju",null,values); dataCall.callBack(loginData,context); } }; //Presentle_login public void login(final String mobile , final String password){ new Thread(new Runnable() { @Override public void run() { User loginuser = MyLoginModel.login(mobile, password); Message message = mHandler.obtainMessage(); message.obj = loginuser; mHandler.sendMessage(message); } }).start(); } }
myLoginModel
public class MyLoginModel { //網路請求gson解析login方法 public static User login(String mobile, String password){ String loginData = MyConnecUtils.getString("http://www.zhaoapi.cn/user/login?mobile=" +mobile+"&password="+password); Gson gson = new Gson(); User user = gson.fromJson(loginData, User.class); return user; } }
BasicLogin
public interface BasicLogin {
//寫回調方法<loginDataCallBack>
void callBack(User data, Context context);
}