mvp登录注册
这个demo需要自己的工具类...
首先添加依赖
compile 'com.squareup.okio:okio:1.5.0' compile 'com.squareup.okhttp3:okhttp:3.2.0' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' compile 'com.google.code.gson:gson:2.8.2' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'添加权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
然后是布局,
____________________________________
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.exam.asus.dierzhou.login.view.MainActivity"> <EditText android:id="@+id/et_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入用户名" /> <EditText android:id="@+id/et_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" /> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_weight="1" android:text="登录" android:id="@+id/btn_login" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_weight="1" android:text="注册" android:id="@+id/btn_re" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
________________________________________
activity_register.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.exam.asus.dierzhou.login.view.RegisterActivity"> <EditText android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="用户名" /> <EditText android:id="@+id/pas" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/et_userName" android:hint="密码" android:inputType="textPassword" /> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_weight="1" android:text="立即注册" android:id="@+id/re" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
________________________________
model层 接口
public interface IModel { void login(User user,int i); }______
public class LoginModel implements IModel{ private OnFinishLisenter lisenter; public interface OnFinishLisenter { void onFinish(Loginbean loginbean ); void onFinish2(Registerbean registerbean); } public void setOnFinishLisenter(OnFinishLisenter lisenter ){ this.lisenter = lisenter; } @Override public void login(User user,int i) { HashMap<String, String> map = new HashMap<>(); map.put("mobile",user.getName()); map.put("password",user.getPass()); if(i==0){ OkHttp3Utils.doPost(API.LOGIN, map, new GsonObjectCallback<Loginbean>() { @Override public void onUi(Loginbean loginbean) { if(lisenter!=null){ lisenter.onFinish(loginbean); } } @Override public void onFailed(Call call, IOException e) { } }); }else { OkHttp3Utils.doPost(API.REGISTER, map, new GsonObjectCallback<Registerbean>() { @Override public void onUi(Registerbean registerbean) { if(lisenter!=null){ lisenter.onFinish2(registerbean); } } @Override public void onFailed(Call call, IOException e) { } }); } } }___________________________
persenter层
public class LoginPersenter implements LoginModel.OnFinishLisenter{ private IView iView; private LoginModel loginModel; public LoginPersenter(IView iView) { this.iView = iView; this.loginModel = new LoginModel(); } public void login(User user,int i){ loginModel.setOnFinishLisenter(this); loginModel.login(user,i); } @Override public void onFinish(Loginbean loginbean) { String code = loginbean.getCode(); if("0".equals(code)){ iView.loginSuccess(); }else { iView.loginFailed(); } } @Override public void onFinish2(Registerbean registerbean) { String code = registerbean.getCode(); if("0".equals(code)){ iView.loginSuccess(); }else { iView.loginFailed(); } } }__________________________________
view层 接口
public interface IView { void loginSuccess(); void loginFailed(); }
__________
public class MainActivity extends AppCompatActivity implements IView{ private EditText etName; private EditText etPassword; private Button btnLogin; private Button btnRes; private LoginPersenter loginPersenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etName = (EditText) findViewById(R.id.et_name); etPassword = (EditText) findViewById(R.id.et_password); btnLogin = (Button)findViewById(R.id.btn_login); btnRes = (Button)findViewById(R.id.btn_re); loginPersenter = new LoginPersenter(this); btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String name = etName.getText().toString().trim(); String pass = etPassword.getText().toString().trim(); if(TextUtils.isEmpty(name)||TextUtils.isEmpty(pass)){ return; }else { loginPersenter.login(new User(name,pass),0); } } }); btnRes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, RegisterActivity.class); startActivity(intent); } }); } @Override public void loginSuccess() { Toast.makeText(MainActivity.this,"success",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this, ZidingyiActivity.class); startActivity(intent); finish(); } @Override public void loginFailed() { Toast.makeText(MainActivity.this,"full",Toast.LENGTH_SHORT).show(); } }_______________________
public class RegisterActivity extends AppCompatActivity implements IView{ private EditText name; private EditText pas; private Button re; private LoginPersenter loginPersenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); name = (EditText) findViewById(R.id.name); pas = (EditText) findViewById(R.id.pas); re = (Button) findViewById(R.id.re); loginPersenter = new LoginPersenter(this); re.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String name1 = name.getText().toString().trim(); String pas1 = pas.getText().toString().trim(); if(TextUtils.isEmpty(name1)||TextUtils.isEmpty(pas1)){ Toast.makeText(RegisterActivity.this, "输入项不能为空", Toast.LENGTH_SHORT).show(); return; }else { loginPersenter.login(new User(name1,pas1),1); } } }); } @Override public void loginSuccess() { Toast.makeText(RegisterActivity.this,"success",Toast.LENGTH_SHORT).show(); } @Override public void loginFailed() { Toast.makeText(RegisterActivity.this,"full",Toast.LENGTH_SHORT).show(); } }