android的MVC模式网络请求demo

此demo使用了

okhttputils---网络请求,butterknife---控件快捷,gson解析

主要文件如下图

MVC模式模式主要文件分别是MainActivity(M),布局文件(V),MvcListen、MvcModel、MvcModelImp(C),下面分别按编码顺序说明demo


1、MvcListen

public interface MvcListener {
    void onSuccess(String str);

    void onFailed();
}
定义监听接口,包含成功和失败2个方法,成功方法用来传递下载的JSON数据

2、MvcModel

public interface MvcModel {

    void getHttpInfo(Map<String,String>  params,String url,MvcListener mvcListener);
}
定义实现接口,用于网络请求

3、MvcModelImp

public class MvcModelImp implements MvcModel{
    @Override
    public void getHttpInfo(Map<String, String> params, String url, final MvcListener mvcListener) {
        FormBody.Builder builder = new FormBody.Builder();
        //遍历集合,,,map集合遍历方式
        for (String key : params.keySet()) {
            builder.add(key, params.get(key));
        }
        OkHttpUtils
                .get()
                .url(url)
                .params(params)
                .build()
                .execute(new StringCallback() {
                    @Override
                    public void onError(okhttp3.Call call, Exception e, int id) {
                        mvcListener.onFailed();
                    }

                    @Override
                    public void onResponse(String response, int id) {
                        Log.e("response===",response);
                        mvcListener.onSuccess(response);
                    }
                });
    }
}
类文件实现 MvcModel接口,因为接口没办法实例化


4、下面是布局文件(一个button一个textview的简单布局)

<?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"
    tools:context="com.sf.mvc.activity.MainActivity"
    android:orientation="vertical">


    <Button
        android:id="@+id/btn_summit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请求数据"/>

    <TextView
        android:id="@+id/tv_str"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</LinearLayout>

5、下面是MainActity,主要用于view展现以及点击操作

public class MainActivity extends Activity implements MvcListener {

    @Bind(R.id.tv_str)
    TextView tvStr;
    @Bind(R.id.btn_summit)
    Button btnSummit;

    private MvcModel weatherModel;
    private Map<String, String> loginMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        weatherModel = new MvcModelImp();
        loginMap = new HashMap<String, String>();
    }

    private String url = Common.URL + "/login?";

    @OnClick(R.id.btn_summit)
    public void onViewClicked() {
        loginMap.put("uName", "盛飞");
        loginMap.put("password", "123456");
        weatherModel.getHttpInfo(loginMap, url, MainActivity.this);
    }

    @Override
    public void onSuccess(String str) {
        //这里可以解析网络请求的str成对象,以防报错加入try-catch
//        MvcBean mvcBean=null;
//        try {
//            mvcBean=GsonUtils.jsonTobean(str,MvcBean.class);;
//        }catch (Exception e){
//
//        }
        tvStr.setText(str);
    }

    
@Override
public void onFailed() {
    Toast.makeText(MainActivity.this,"登录失败",Toast)
}
}

在这里通过MVC模式实现了简单的登录的网络请求功能

源码下载地点击打开demo

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中的MVC设计模式是一种软件架构模式,用于将应用程序的逻辑、数据和用户界面分离开来。它由三个主要组件组成:Model(模型)、View(视图)和Controller(控制器)。 1. Model(模型):模型负责处理应用程序的数据和业务逻辑。它包含数据的获取、存储和处理方法。在Android中,模型通常是指数据源,例如数据库、网络请求或文件系统。 2. View(视图):视图负责展示数据给用户,并接收用户的输入。它通常是指Android中的布局文件,例如XML文件,用于定义应用程序的用户界面。 3. Controller(控制器):控制器负责协调模型和视图之间的交互。它接收用户的输入,并根据输入更新模型和视图。在Android中,控制器通常是指Activity或Fragment,它们处理用户的交互,并更新模型和视图。 MVC设计模式的优点是可以实现代码的重用和模块化,使得应用程序更易于维护和扩展。它将应用程序的不同部分分离开来,使得每个部分都可以独立开发和测试。 下面是一个简单的示例代码,演示了Android中的MVC设计模式: ```java // Model public class UserModel { private String name; private int age; public UserModel(String name, int age) { this.name = name; this.age = age; } // Getters and setters // Controller public class UserController { private UserModel model; private UserView view; public UserController(UserModel model, UserView view) { this.model = model; this.view = view; } public void updateName(String name) { model.setName(name); } public void updateAge(int age) { model.setAge(age); } public void displayUser() { view.displayUser(model.getName(), model.getAge()); } } // View public class UserView { public void displayUser(String name, int age) { System.out.println("Name: " + name); System.out.println("Age: " + age); } } } // Usage UserModel model = new UserModel("John", 25); UserView view = new UserView(); UserController controller = new UserController(model, view); controller.displayUser(); // 输出:Name: John, Age: 25 controller.updateName("Mike"); controller.updateAge(30); controller.displayUser(); // 输出:Name: Mike, Age: 30 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值