Mvp简单实现

来源:互联网 发布:网络溜溜球的意思 编辑:程序博客网 时间:2024/06/05 07:10

首先创建Model,Presenter类

Presenter类:

public class MainActivityPresenter {    private LoginView loginView;    private MainActivityModel mainActivityModel;    public MainActivityPresenter(LoginView loginView) {        this.loginView = loginView;        this.mainActivityModel = new MainActivityModel();    }    public void login(String username, String password) {        if (TextUtils.isEmpty(username)) {            loginView.usernameNull();            return;        }        if (TextUtils.isEmpty(password)) {            loginView.passwordNull();            return;        }        mainActivityModel.login(username, password, new MainActivityModel.ModelListener() {            @Override            public void loginSuccess(String result) {                loginView.loginSuccess(result);            }        });    }    public void detach() {        loginView = null;    }}

Model类:

public class MainActivityModel {    public void login(String username, String password, final ModelListener listener) {        OkHttpClient client = new OkHttpClient();        Request request = new Request.Builder()                .url("http://qhb.2dyt.com/Bwei/login?username=muhanxi&password=111&postkey=1503d")                .build();        Call call = client.newCall(request);        call.enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {            }            @Override            public void onResponse(Call call, Response response) throws IOException {                String result = response.body().string();                listener.loginSuccess(result);            }        });    }    interface ModelListener {        public void loginSuccess(String result);    }}

MainActivity:

public class MainActivity extends AppCompatActivity implements LoginView {    private EditText mainUsername;    private EditText mainPassword;    private Button mainBtn;    private MainActivityPresenter presenter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        mainUsername = (EditText) findViewById(R.id.main_username);        mainPassword = (EditText) findViewById(R.id.main_password);        mainBtn = (Button) findViewById(R.id.main_btn);        presenter = new MainActivityPresenter(this);        mainBtn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                String username = mainUsername.getText().toString().trim();                String password = mainPassword.getText().toString().trim();                presenter.login(username, password);            }        });    }    @Override    public void usernameNull() {        Toast.makeText(this, "usernameNull", Toast.LENGTH_SHORT).show();    }    @Override    public void passwordNull() {        Toast.makeText(this, "passwordNull", Toast.LENGTH_SHORT).show();    }    @Override    public void loginSuccess(String result) {        runOnUiThread(new Runnable() {            @Override            public void run() {                Toast.makeText(MainActivity.this, "loginSuccess", Toast.LENGTH_SHORT).show();            }        });    }    @Override    protected void onDestroy() {        super.onDestroy();        presenter.detach();    }}

定义接口:

public interface LoginView {    public void usernameNull();    public void passwordNull();    public void loginSuccess(String result);}

最终是这样的:


原创粉丝点击