我正在学习Android的MVP设计,我是新手,所以需要你宝贵的时间。我去了MVP的基础知识它是如何工作的,现在我卡住了所以需要你的帮助,我必须将数据发布到服务器,当我在演示者中硬编码值然后我得到响应正确但我需要数据当用户按下时,在LoginActivity视图中,该值应传递给演示者,演示者将该值传递给Retrofit并返回结果。这是我的尝试:
我的LoginActvity:
public class LoginActivity extends BaseActivity implements LoginView {
@BindView(R.id.company_name)
protected EditText companyName_et;
@BindView(R.id.email)
protected EditText email_et;
@BindView(R.id.password)
protected EditText password_et;
@BindView(R.id.submit)
protected Button submit_btn;
@Inject
LoginPresenter loginPresenter;
@Override
protected int getContentView() {
return R.layout.login_activity;
}
@Override
protected void onViewReady(Bundle savedInstanceState, Intent intent) {
super.onViewReady(savedInstanceState, intent);
submit_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String company=companyName_et.getText().toString();
String username=email_et.getText().toString();
String password=password_et.getText().toString();
/*
I have to put the above String data
to my model class then i have to post the data to the server
*/
loginPresenter.passLoginDataToServer();
}
});
}
@Override
public void onError(String s) {
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess(String s) {
}
@Override
public void onResponse(Login login) {
Log.e("-----",""+login.getUserId());
}
@Override
protected void resolveDaggerDependency() {
DaggerLoginComponent.builder().applicationComponent(getApplicationComponent()).loginModule(new LoginModule(this)).build().inject(this);
}
}
这是Login Presenter:
public class LoginPresenter extends BasePresenter<LoginView> implements Observer<Login>{
@Inject
CreateApiService createApiService;
@Inject
public LoginPresenter(){};
public void passLoginDataToServer(){
/*
when i hard code the data , i get the successful response.Like :
String user="raj";
String check="true";
Map<String,String> headers=new HashMap();
headers,put("xyz","pqr");
Login loginObject = new Login("xyzs", "pqr","Qtch","mvp");
*/
/*
But I need the data here from my LoginActivity ? Dunno how to pass the data from LoginActivity to presenter
*/
Observable<Login> loginObservable=createApiService.loginUser(user, check, headers, loginObject);
subscribeToLogin(loginObservable,this);
}
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Login login) {
getmView().onResponse(login);
}
@Override
public void onError(Throwable e) {
getmView().onError("Error "+e);
Log.e("---",""+e);
}
@Override
public void onComplete() {
getmView().onSuccess("Successfully Loaded");
}
}
这是我的界面:
public interface LoginView extends BaseView {
void onError(String s);
void onSuccess(String s);
void onResponse(Login login);
}
答案 0 :(得分:0)
您可以将参数添加到方法中吗?
在您的活动中:
@Override public void onClick(View view) {
String company=companyName_et.getText().toString();
String username=email_et.getText().toString();
String password=password_et.getText().toString();
loginPresenter.passLoginDataToServer(compay, username, password);
}
在演示者中:
public void passLoginDataToServer(String company, String username, String password){
// Now create your request from the dynamic parameters
Observable<Login> loginObservable=createApiService.loginUser(username, check, headers, loginObject);
subscribeToLogin(loginObservable,this);
}