void setname(String name);
String getName();
void setpass(String pass);
String getPass();
}
public interface IRegView {
void setname(String name);
String getName();
void setpass(String pass);
String getPass();
}
public interface IRegModel {
void showReg(Map<String,String> map, Reg reg);
interface Reg{
void complate(RegBean rb);
}
}
public interface ILoginModel {
void showLogin(Map<String,String> map,Login login);
interface Login{
void complate(LoginBean lb);
}
}
public class LoginModel implements ILoginModel{
@Override
public void showLogin(Map<String, String> map, final Login login) {
RetrofitUtils.getInstance().login(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<LoginBean>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.i("==========", "onError: "+e.toString());
}
@Override
public void onNext(LoginBean loginBean) {
login.complate(loginBean);
}
});
}
}
public class RegModel implements IRegModel{
@Override
public void showReg(Map<String, String> map, final Reg reg) {
RetrofitUtils.getInstance().reg(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<RegBean>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(RegBean regBean) {
reg.complate(regBean);
}
});
}
}
public class LoginPresenter implements IPresenter<ILoginView> {
ILoginModel model;
Context context;
SoftReference<ILoginView> softReference;
public LoginPresenter(ILoginView view,Context context) {
attach(view);
this.context = context;
model = new LoginModel();
}
public void LoginData(){
String name = softReference.get().getName();
String pass = softReference.get().getPass();
Map<String,String> map = new HashMap<>();
map.put("mobile",name);
map.put("password",pass);
model.showLogin(map, new ILoginModel.Login() {
@Override
public void complate(LoginBean lb) {
String code = lb.getCode();
int uid = lb.getData().getUid();
Log.i("uid", "complate: "+uid);
EventBus.getDefault().postSticky(new MessageBus(lb.getData().getUid()));
if (code.equals("0")){
context.startActivity(new Intent(context, HomeActivity.class));
Toast.makeText(context,lb.getMsg(),Toast.LENGTH_LONG).show();
}else {
Toast.makeText(context,lb.getMsg(),Toast.LENGTH_LONG).show();
return;
}
}
});
}
@Override
public void attach(ILoginView view) {
softReference = new SoftReference<ILoginView>(view);
}
@Override
public void deach() {
softReference.clear();
}
}
public class RegPresenter implements IPresenter<IRegView>{
IRegModel model;
SoftReference<IRegView> softReference;
Context context;
public RegPresenter(IRegView view, Context context) {
attach(view);
this.context = context;
model = new RegModel();
}
public void RegData(){
String name = softReference.get().getName();
String pass = softReference.get().getPass();
Map<String,String> map = new HashMap<>();
map.put("mobile",name);
map.put("password",pass);
model.showReg(map, new IRegModel.Reg() {
@Override
public void complate(RegBean rb) {
String code = rb.getCode();
if(code.equals("0")){
context.startActivity(new Intent(context, MainActivity.class));
Toast.makeText(context,rb.getMsg(),Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context,rb.getMsg(),Toast.LENGTH_SHORT).show();
return;
}
}
});
}
@Override
public void attach(IRegView view) {
softReference = new SoftReference<IRegView>(view);
}
@Override
public void deach() {
softReference.clear();;
}
}
public class RegActivity extends BaesActivity<RegPresenter> implements IRegView, View.OnClickListener {
private TextInputLayout usernameWrapper;
private TextInputLayout passwordWrapper;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reg);
initView();
}
private void initView() {
usernameWrapper = (TextInputLayout) findViewById(R.id.usernameWrapper);
passwordWrapper = (TextInputLayout) findViewById(R.id.passwordWrapper);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(this);
}
@Override
protected void createpresenter() {
presneter = new RegPresenter(this, this);
}
@Override
public void setname(String name) {
}
@Override
public String getName() {
return usernameWrapper.getEditText().getText().toString();
}
@Override
public void setpass(String pass) {
}
@Override
public String getPass() {
return passwordWrapper.getEditText().getText().toString();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn:
presneter.RegData();
break;
default:
break;
}
}
}
public class MainActivity extends BaesActivity<LoginPresenter> implements ILoginView, View.OnClickListener {
private TextInputLayout usernamewrapper;
private TextInputLayout passwordwrapper;
private Button btn;
private TextView usernews;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
usernamewrapper = (TextInputLayout) findViewById(R.id.usernameWrapper);
passwordwrapper = (TextInputLayout) findViewById(R.id.passwordWrapper);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(this);
usernews = (TextView) findViewById(R.id.news_user);
usernews.setOnClickListener(this);
}
@Override
protected void createpresenter() {
presneter = new LoginPresenter(this, this);
}
@Override
public void setname(String name) {
}
@Override
public String getName() {
return usernamewrapper.getEditText().getText().toString();
}
@Override
public void setpass(String pass) {
}
@Override
public String getPass() {
return passwordwrapper.getEditText().getText().toString();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn:
presneter.LoginData();
break;
case R.id.news_user:
startActivity(new Intent(MainActivity.this, RegActivity.class));
break;
default:
break;
}
}
}
@FormUrlEncoded
@POST("user/login")
Observable<LoginBean> login(@FieldMap Map<String,String> fields);
@FormUrlEncoded
@POST("user/reg")
Observable<RegBean> reg(@FieldMap Map<String,String> fields);
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:text="注册界面"
android:textSize="30sp"
android:textColor="#333333"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:orientation="vertical">
<android.support.design.widget.TextInputLayout
android:id="@+id/usernameWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="Username"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/passwordWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="Password"/>
</android.support.design.widget.TextInputLayout>
<Button
android:id="@+id/btn"
android:layout_marginTop="4dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="注册"/>
</LinearLayout>