Mvp实现登录注册
来源:互联网 发布:sql server 默认值 编辑:程序博客网 时间:2024/05/16 08:36
注册的Activity
public class MainActivity extends AppCompatActivity implements NewsView{ EditText et_my1; EditText et_my2; Button bt_my; Button bt_my2; private NewsPS newsPS; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); et_my1= (EditText) findViewById(R.id.et_my1); et_my2 = (EditText) findViewById(R.id.et_my2); bt_my = (Button) findViewById(R.id.bt_my); bt_my2 = (Button) findViewById(R.id.bt_my2); newsPS = new NewsPS(this); bt_my.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (newsPS!=null){ newsPS.LoginTrueP(MainActivity.this,et_my1.getText().toString(), et_my2.getText().toString() ); } } }); bt_my2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,DengLuYeMian.class); startActivity(intent); } }); } @Override public void LoginTrueS() { et_my1.setError("1"); } @Override public void LoginFalseS() { et_my2.setError("1"); } @Override public void LoginTrue() { Toast.makeText(MainActivity.this, "注册成功", Toast.LENGTH_SHORT).show(); } @Override public void LoginFalse() { }}布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.zhangyongbo.mydenglu.MainActivity"> <EditText android:id="@+id/et_my1" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="账号" /> <EditText android:id="@+id/et_my2" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="密码" /> <Button android:id="@+id/bt_my2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录" /> <Button android:id="@+id/bt_my" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="注册" /></LinearLayout>
View层接口
注册的
public interface NewsView { void LoginTrueS(); void LoginFalseS(); void LoginTrue(); void LoginFalse();}
登录的
public interface ViewDenglu { void LoginTrueS(); void LoginFalseS(); void LoginTrue(); void LoginFalse();}
总结口
public interface JieKoiHuiDiao { void JieKoiHuiDiaoTrueS();//用于做判断 void JieKoiHuiDiaoFalseS();//用于做判断 void JieKoiHuiDiaoTrue();//用于传值 void JieKoiHuiDiaoFalse();//用于传值}Modle层注册接口
public interface NewsMoudle { //在接口里下两个方法到类里去实现接口并且实现方法 void LoginFalse(Context context,String name,String paw); void LoginTrue(Context context,String name,String paw);}Modle层注册类数据请求
public class NewsMoudles implements NewsMoudle { private JieKoiHuiDiao jieKoiHuiDiao; String url="http://120.27.23.105/user/reg"; public NewsMoudles(JieKoiHuiDiao jieKoiHuiDiao) { this.jieKoiHuiDiao = jieKoiHuiDiao; } @Override public void LoginFalse(Context context, String name, String paw) { if (TextUtils.isEmpty(name)){ jieKoiHuiDiao.JieKoiHuiDiaoTrueS(); } if(TextUtils.isEmpty(paw)){ jieKoiHuiDiao.JieKoiHuiDiaoFalseS(); } LoginTrue(context,name,paw); } @Override public void LoginTrue(final Context context, String name, String paw) { Map<String,String> LoginMap = new HashMap<>(); LoginMap.put("mobile",name); LoginMap.put("password",paw); OkHttp3Utils.doPost(url, LoginMap, new GsonObjectCallback<NewsBean>() { @Override public void onUi(NewsBean newsBean) { if (newsBean.getCode().equals("0")){ jieKoiHuiDiao.JieKoiHuiDiaoTrue(); Toast.makeText(context, "乘法", Toast.LENGTH_SHORT).show(); } } @Override public void onFailed(Call call, IOException e) { } }); }}Presenter层注册接口
public interface NewsP { void LoginTrueP(Context context,String name,String paw);}Presenter注册类
public class NewsPS implements NewsP , JieKoiHuiDiao{ private NewsView newsView; private final NewsMoudle moudle; public NewsPS(NewsView newsView) { this.newsView = newsView; moudle = new NewsMoudles(this); } @Override public void LoginTrueP(Context context, String name, String paw) { moudle.LoginFalse(context,name,paw); } @Override public void JieKoiHuiDiaoTrueS() { if (newsView!=null){ newsView.LoginTrueS(); } } @Override public void JieKoiHuiDiaoFalseS() { if (newsView!=null){ newsView.LoginFalseS(); } } @Override public void JieKoiHuiDiaoTrue() { if (newsView!=null){ newsView.LoginTrue(); } } @Override public void JieKoiHuiDiaoFalse() { if (newsView!=null){ newsView.LoginFalse(); } }}
登录的Activity
public class DengLuYeMian extends Activity implements ViewDenglu{ EditText et_dL1; EditText et_dL2; Button but_bl; private NewsPdls newsPdls; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.denglu); et_dL1 = findViewById(R.id.et_dL1); et_dL2 = findViewById(R.id.et_dL2); but_bl = findViewById(R.id.but_bl); newsPdls = new NewsPdls(this); but_bl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (newsPdls!=null){ newsPdls.LoginTrueP(DengLuYeMian.this,et_dL1.getText().toString(),et_dL2.getText().toString()); } } }); } @Override public void LoginTrueS() { et_dL1.setError("1"); } @Override public void LoginFalseS() { et_dL2.setError("2"); } @Override public void LoginTrue() { Toast.makeText(DengLuYeMian.this, "成功", Toast.LENGTH_SHORT).show(); } @Override public void LoginFalse() { Toast.makeText(DengLuYeMian.this, "失败", Toast.LENGTH_SHORT).show(); }}布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/et_dL1" android:textSize="15dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="账号" /> <EditText android:id="@+id/et_dL2" android:textSize="15dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="密码" /> <Button android:id="@+id/but_bl" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录" /></LinearLayout>Modle层登录接口
public interface NewsdengluS { //在接口里下两个方法到类里去实现接口并且实现方法 void LoginFalse(Context context, String name, String paw); void LoginTrue(Context context,String name,String paw);}Modle层登录类请求数据
public class NewsDnglu implements NewsdengluS { private JieKoiHuiDiao jieKoiHuiDiao; String is ="http://120.27.23.105/user/login"; public NewsDnglu(JieKoiHuiDiao jieKoiHuiDiao) { this.jieKoiHuiDiao = jieKoiHuiDiao; } @Override public void LoginFalse(Context context, String name, String paw) { if (TextUtils.isEmpty(name)){ jieKoiHuiDiao.JieKoiHuiDiaoTrueS(); } if (TextUtils.isEmpty(paw)){ jieKoiHuiDiao.JieKoiHuiDiaoFalseS(); } LoginTrue(context,name,paw); } @Override public void LoginTrue(final Context context, String name, String paw) { Map<String,String> map = new HashMap<>(); map.put("mobile",name); map.put("password",paw); OkHttp3Utils.doPost(is, map, new GsonObjectCallback<NewsDl>() { @Override public void onUi(NewsDl newsDl) { if (newsDl.getCode().equals("0")){ jieKoiHuiDiao.JieKoiHuiDiaoTrue(); Intent intent = new Intent(context, GeRenActivity.class); intent.putExtra("name",newsDl.getData().getUsername()); context.startActivity(intent); } } @Override public void onFailed(Call call, IOException e) { } }); }}Presenter层的登录接口
public interface NewsPDl { void LoginTrueP(Context context, String name, String paw);}
Presenter层的登录类
public class NewsPdls implements NewsPDl ,JieKoiHuiDiao{ private ViewDenglu viewDenglu; private final NewsdengluS newsdengluS; public NewsPdls(ViewDenglu viewDenglu) { this.viewDenglu = viewDenglu; //多态 newsdengluS = new NewsDnglu(this); } @Override public void LoginTrueP(Context context, String name, String paw) { newsdengluS.LoginFalse(context,name,paw); } @Override public void JieKoiHuiDiaoTrueS() { if (viewDenglu!=null){ viewDenglu.LoginTrueS(); } } @Override public void JieKoiHuiDiaoFalseS() { if (viewDenglu!=null){ viewDenglu.LoginFalseS(); } } @Override public void JieKoiHuiDiaoTrue() { if (viewDenglu!=null){ viewDenglu.LoginTrue(); } } @Override public void JieKoiHuiDiaoFalse() { if (viewDenglu!=null){ viewDenglu.LoginFalse(); } }}登录成功后跳转的页面
public class GeRenActivity extends AppCompatActivity { TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ge_ren); Intent intent = getIntent(); String name = intent.getStringExtra("name"); tv = (TextView) findViewById(R.id.tv); tv.setText(name); }}布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zhangyongbo.mydenglu.GeRenActivity"> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /></RelativeLayout>下面是所用到的Bean包
注册的bean包
public class NewsBean { /** * msg : 天呢!用户名或密码不能为空 * code : 1 * data : {} */ private String msg; private String code; private String data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getData() { return data; } public void setData(String data) { this.data = data; }}登录的Bean包public class NewsDl { /** * msg : 登录成功 * code : 0 * data : {"age":null,"appkey":"4a1c72e3c8593a53","appsecret":"9FCD2D1610DBB9F176024508997C6942","createtime":"2017-11-09T20:56:03","email":null,"gender":null,"icon":null,"mobile":"17600261322","money":null,"nickname":null,"password":"8F669074CAF5513351A2DE5CC22AC04C","token":"8FF97958783CDC48E70CE649E8A8A660","uid":1913,"username":"17600261322"} */ private String msg; private String code; private DataBean data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class DataBean { /** * age : null * appkey : 4a1c72e3c8593a53 * appsecret : 9FCD2D1610DBB9F176024508997C6942 * createtime : 2017-11-09T20:56:03 * email : null * gender : null * icon : null * mobile : 17600261322 * money : null * nickname : null * password : 8F669074CAF5513351A2DE5CC22AC04C * token : 8FF97958783CDC48E70CE649E8A8A660 * uid : 1913 * username : 17600261322 */ private Object age; private String appkey; private String appsecret; private String createtime; private Object email; private Object gender; private Object icon; private String mobile; private Object money; private Object nickname; private String password; private String token; private int uid; private String username; public Object getAge() { return age; } public void setAge(Object age) { this.age = age; } public String getAppkey() { return appkey; } public void setAppkey(String appkey) { this.appkey = appkey; } public String getAppsecret() { return appsecret; } public void setAppsecret(String appsecret) { this.appsecret = appsecret; } public String getCreatetime() { return createtime; } public void setCreatetime(String createtime) { this.createtime = createtime; } public Object getEmail() { return email; } public void setEmail(Object email) { this.email = email; } public Object getGender() { return gender; } public void setGender(Object gender) { this.gender = gender; } public Object getIcon() { return icon; } public void setIcon(Object icon) { this.icon = icon; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public Object getMoney() { return money; } public void setMoney(Object money) { this.money = money; } public Object getNickname() { return nickname; } public void setNickname(Object nickname) { this.nickname = nickname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }}这里用到的是OkHttp请求数据那就需要自己封装了这是用到的网络权限<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />这是用到的依赖compile 'com.android.support:appcompat-v7:26.0.0-alpha1'compile 'com.jakewharton:butterknife:7.0.0'compile 'com.squareup.okhttp3:okhttp:3.2.0'compile 'com.squareup.okio:okio:1.7.0'compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'compile 'com.squareup.picasso:picasso:2.5.2'compile files('libs/gson-2.2.4.jar')下面是把EdText输入框变成框框android:background="@android:drawable/alert_light_frame"
阅读全文
1 0
- MVP 实现登录注册
- Mvp实现登录注册
- MVP实现登录注册
- MVP实现登录注册功能
- 封装MVP 实现登录注册功能
- 登录注册mvp模式
- MVP注册登录
- MVP 登录注册
- MVP注册登录
- MVP 登录+注册
- MVP登录注册
- MVP登录注册
- MVP登录注册
- MVP登录注册跳转
- MVP登录注册
- MVP登录注册、跳转
- 登录注册mvp
- 登录注册(MVp)
- 仿射变换的数学理解
- C++指针和const
- AngularJS增删改
- 极大极小搜索
- BaseFragment
- Mvp实现登录注册
- BaseActivity
- PullToRefresh换内容
- 添加球员
- 【数据库-MySql】按时间间隔分组查询 group by count(*) date_format
- c语言之数组
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128) 解决
- 水平分库如何做到平滑扩展
- inline和define的特点和区别