(Android) MVP模板 (使用okhttp-- get请求写的一个MVP模板)
来源:互联网 发布:矩阵的运算规律总结 编辑:程序博客网 时间:2024/06/14 03:53
效果图:
首先xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/et_username" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:hint="请输入用户名" android:text="15910907758" /> <EditText android:id="@+id/et_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" android:inputType="textPassword" android:text="123456" /> <Button android:id="@+id/btn_login" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录" /></LinearLayout>
view 视图层:
package bawe.com.day_okhttp_1107;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import bawe.com.day_okhttp_1107.presenter.LoginPresenter;/** * view 视图层 * */public class MainActivity extends AppCompatActivity implements View.OnClickListener,IView{ private static final String TAG = "MainActivity"; private EditText etUserName; private EditText etPassword; private Button btnLogin; private LoginPresenter loginPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etUserName = (EditText) findViewById(R.id.et_username); etPassword = (EditText) findViewById(R.id.et_password); btnLogin = (Button) findViewById(R.id.btn_login); loginPresenter = new LoginPresenter(); loginPresenter.assachView(this); btnLogin.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.btn_login: String name = etUserName.getText().toString().trim(); String pass = etPassword.getText().toString().trim(); loginPresenter.login(name,pass); break; } } @Override public void Success(String message) { Log.i(TAG,"success:"+message); } @Override public void Failed(String error) { Log.i(TAG,"error:"+error); }}view视图层接口
/** * 视图层接口 */public interface IView { void Success(String message); void Failed(String error);}===========================================================================modle 模型层
package bawe.com.day_okhttp_1107.http;import java.io.IOException;import java.util.Map;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * modle 模型层 * */public class OkhttpUtils { private static volatile OkhttpUtils instance; private OkHttpClient client; private OkhttpUtils(){ //创建OkHttpClient 对象 client = new OkHttpClient(); } //单列模式 public static OkhttpUtils getInstance(){ if (instance==null){ synchronized (OkhttpUtils.class){ if (null==instance){ instance=new OkhttpUtils(); } } } return instance; } /* * okhttp封装的get请求 * */ public void get(String url, Map<String,String> map, final Okjiekou jiekou){ ////http://120.27.23.105/user/login?mobile=111111&password=123456 StringBuffer sb = new StringBuffer(); sb.append(url).append("?"); for (Map.Entry<String, String> entry : map.entrySet()) { //拼接接口 sb.append(entry.getKey()) .append("=") .append(entry.getValue()) .append("&"); } sb.deleteCharAt(sb.lastIndexOf("&")); //2 创建Request 对象 Request build = new Request.Builder() .get() .url(sb.toString()) .build(); //3 创建call对象 Call call = client.newCall(build); //4 khttp提供的callback回调接口 call.enqueue(new Callback() { @Override //请求失败的方法 public void onFailure(Call call, IOException e) { //失败的时候返回异常 的信息 jiekou.onFailed(e.getMessage()); } //请求成功的方法 @Override public void onResponse(Call call, Response response) throws IOException { //取出字符串 String string = response.body().string(); //成功之后调我们自己的回调方法 jiekou.onSuccess(string); } }); }}
模型层接口
/** * 模型层接口 */public interface Okjiekou { void onSuccess(String message); void onFailed(String error);}
================================================================
presenter层 连接 视图层和模型层的桥梁
package bawe.com.day_okhttp_1107.presenter;import java.util.HashMap;import bawe.com.day_okhttp_1107.IView;import bawe.com.day_okhttp_1107.http.OkhttpUtils;import bawe.com.day_okhttp_1107.http.Okjiekou;/** * presenter层 * 连接 视图层和模型层的桥梁 * */public class LoginPresenter { private IView iv; public void assachView(IView iv){ this.iv=iv; } public void login(String username, String password){ HashMap<String, String> map = new HashMap<>(); map.put("mobile",username); map.put("password",password); OkhttpUtils.getInstance().get("http://120.27.23.105/user/login", map, new Okjiekou() { @Override public void onSuccess(String message) { iv.Success(message); } @Override public void onFailed(String error) { iv.Failed(error); } }); }}
写这个模板主要就是比较简单的一个 MVP模式 方便日后套用
阅读全文
0 0
- (Android) MVP模板 (使用okhttp-- get请求写的一个MVP模板)
- android 之MVP模板
- MVP模式登录(OKHTTP请求数据)
- Android当中的MVP模式(四)插曲-封装OkHttp
- OkHttp+MVP请求数据
- Android Studio MVP 构建模板
- MVP-简单的OkHttp网络请求数据
- MVP模式+OKhttp的封装请求数据
- kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式
- okhttp初体现(okhttp的get请求的使用)
- Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录注册(含后台+数据库)的demo
- ANDROID OKHTTP MVP
- Mvp框架+okhttp请求+recyclerview
- MVP+okhttp请求网络接口
- android MVP + dagger2 + Retrofit + Rxjava+okhttp android基础项目框架搭建(2)--之MVP引入
- mvp封装的OKhttp
- AndroidStudio创建MVP模板
- 搭建MVP模板框架
- js中自己遇到的时间处理方式
- 林轩田--机器学习技法--SVM笔记1--线性支持向量机(linear+SVM)
- 2017.11.7机房小测-K进制分解应用/模型转换-矩形并/题目性质-IOI2015原题简化
- 【BZOJ 4520/CQOI 2016】K远点对
- Java并发之读/写锁
- (Android) MVP模板 (使用okhttp-- get请求写的一个MVP模板)
- mongo bson转java对象报No converter问题
- Android 线程和线程池
- 消息队列
- 顺序表基本操作
- ListView多条目加载
- 什么是可见光通信
- 集合_1
- DatePicker