MVC基本了解

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
下面是我个人写的MVC
整体的项目架构

mvc.png

FoodBean 食物实体类
FoodListener 逻辑处理完成 通知View层
FoodModule 这个接口是C层和M层用来交互的
FoodModuleImpl M层用来进行网络请求的是FoodMdule的实现类
以下是代码

布局文件

<?xml version="1.0" encoding="utf-8"?>

<ListView
    android:id="@+id/foodListView"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</ListView>

MainActivity类

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import androidx.appcompat.app.AppCompatActivity;

import com.example.h0802.module.FoodListener;
import com.example.h0802.module.FoodModule;
import com.example.h0802.module.FoodModuleImpl;

import java.util.List;

public class MainActivity extends AppCompatActivity implements FoodListener {

private ListView foodListView;
private FoodModule foodModule;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    foodListView = findViewById(R.id.foodListView);
    foodModule = new FoodModuleImpl();
    foodModule.getString("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1", this);
}

@Override
public void getList(final List<String> list) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if (list == null) {
                return;
            }
            foodListView.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_dropdown_item_1line, list));
        }
    });
}

}

FoodModule类

public interface FoodModule {
void getString(String address, FoodListener foodListener);
}

FoodModuleImpl

import com.alibaba.fastjson.JSON;
import com.example.h0802.bean.FoodBean;

import java.io.IOException;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class FoodModuleImpl implements FoodModule {
@Override
public void getString(String address, final FoodListener foodListener) {
OkHttpClient client = new OkHttpClient.Builder()
.callTimeout(5, TimeUnit.SECONDS)
.readTimeout(5, TimeUnit.SECONDS)
.build();

    Request request = new Request.Builder()
            .url(address)
            .get()
            .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 {
            ArrayList<String> datas = new ArrayList<>();
            FoodBean foodBean = JSON.parseObject(response.body().string(), FoodBean.class);
            for (FoodBean.DataBean food : foodBean.getData()) {
                datas.add(food.getTitle());
            }
            foodListener.getList(datas);
        }
    });
}

}

FoodListener

import java.util.List;

public interface FoodListener {
void getList(List list);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值