当前位置: 首页 > news >正文

恋爱网站建设视频号的网站链接

恋爱网站建设,视频号的网站链接,政法网站内容建设,淮安建设机械网站目录 架构设计的目的对 MVC 的理解Android 中 MVC 的问题试吃个小李子ViewModelController 大家好! 作为 Android 程序猿,MVC 应该是我们第一个接触的架构吧,从开始接触 Android 那一刻起,我们就开始接触它,可还记得我…

目录

    • 架构设计的目的
    • 对 MVC 的理解
    • Android 中 MVC 的问题
    • 试吃个小李子
      • View
      • Model
      • Controller

大家好!

作为 Android 程序猿,MVC 应该是我们第一个接触的架构吧,从开始接触 Android 那一刻起,我们就开始接触它,可还记得我们写的第一个 App 代码的样子?

架构设计的目的

通过设计使程序模块化,模块内 高内聚、模块间 低耦合,提高开发效率,便于复用及后续维护。

对 MVC 的理解

MVC 架构图,箭头代表事件流向

上图是 MVC 的架构图,我们都知道,MVC架构中 M 代表 Model(模型)、V 代表 View(视图)、C 代表 Controller(控制器)。它们的职责分别是:

  1. View 负责接收用户的输入事件,然后将事件传递给 Controller;
  2. Controller 收到事件后,会进行业务处理,通知 Model 请求数据;
  3. Model 拿到数据后返回给 Controller 进行后续处理,或者通知 View 更新 UI。

Android 中 MVC 的问题

不幸的是,在 Android 中,通常由 Activity 充当 Controller,与此同时,由于 xml 的弱功能性,导致 Activity 还需要负责视图的显示,所以原本是负责初始化页面的 Activity,就变成了 View 和 Controller 的载体,导致这两部分内容耦合在 Activity 中。后果就是Activity 越来越臃肿、难以维护。这就违反了架构设计的初衷,所以就有了后来的MVP。

试吃个小李子

点击按钮,请求 wanandroid 网站的 banner 接口数据,请求成功后更新到UI上显示接口数据

代码结构

View

一个Button,点击请求接口数据
一个TextView,用于回显接口返回的数据

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn_get_banner_info"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="getBannerInfo"android:text="@string/get_banner_info" /><TextViewandroid:id="@+id/tv_banner_info"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>

Model

请求接口

Repository.java

public final class Repository {private ApiService mService;private Repository() {createService();}public static Repository getInstance() {return SingletonHolder.sInstance;}private static final class SingletonHolder {private static final Repository sInstance = new Repository();}/*** 请求 banner 数据*/public void getBanners(ResponseCallback<List<Banner>> callback) {mService.getBanners().enqueue(new Callback<BaseResponse<List<Banner>>>() {@Overridepublic void onResponse(Call<BaseResponse<List<Banner>>> call, Response<BaseResponse<List<Banner>>> response) {BaseResponse<List<Banner>> body = response.body();if (response.isSuccessful() && body != null) {if (body.getErrorCode() == 0) {callback.onSuccess(body.getData());} else {callback.onFail(body.getErrorMsg());}} else {callback.onFail(response.message());}}@Overridepublic void onFailure(Call<BaseResponse<List<Banner>>> call, Throwable throwable) {callback.onFail(throwable.getMessage());}});}private void createService() {Retrofit retrofit = new Retrofit.Builder().baseUrl(HttpConstant.BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();mService = retrofit.create(ApiService.class);}
}

Controller

获取数据
更新UI

MainActivity.java

public class MainActivity extends AppCompatActivity implements ResponseCallback<List<Banner>> {private TextView mBannerInfoTv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mBannerInfoTv = (TextView) findViewById(R.id.tv_banner_info);}/*** 按钮点击事件* @param view*/public void getBannerInfo(View view) {getBanners();}/*** 获取 banner 数据*/private void getBanners() {Repository.getInstance().getBanners(this);}@Overridepublic void onSuccess(List<Banner> banners) {if (banners != null && banners.size() > 0) {showBannerInfo(banners);}}@Overridepublic void onFail(String msg) {Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT);}/*** 更新UI* @param banners*/private void showBannerInfo(List<Banner> banners) {StringBuilder sb = new StringBuilder("wanandroid 官网\nhttps://www.wanandroid.com\n\n");for(Banner item : banners) {sb.append(item.getTitle()).append('\n');}mBannerInfoTv.setText(sb.toString());}
}

附上源码链接

致谢:
感谢 wanandroid 提供的开放API

参考:
MVC、MVP、MVVM,我到底该怎么选?

写在最后:
很荣幸成为一名 Android 程序猿,虽然不是一名合格的猿。一路走来磕磕绊绊,借此感谢帮助过我的人,感谢指点、感恩遇见!


文章转载自:
http://windbroken.rzgp.cn
http://sublimate.rzgp.cn
http://oximeter.rzgp.cn
http://retinoblastoma.rzgp.cn
http://bilbo.rzgp.cn
http://avn.rzgp.cn
http://godsend.rzgp.cn
http://unidentified.rzgp.cn
http://poof.rzgp.cn
http://robotnik.rzgp.cn
http://gasworker.rzgp.cn
http://unambiguously.rzgp.cn
http://tamboura.rzgp.cn
http://homonuclear.rzgp.cn
http://overproduce.rzgp.cn
http://gary.rzgp.cn
http://woodless.rzgp.cn
http://superset.rzgp.cn
http://galvanotropic.rzgp.cn
http://intergenerational.rzgp.cn
http://unbridgeable.rzgp.cn
http://mouch.rzgp.cn
http://dsrv.rzgp.cn
http://hypnogenetically.rzgp.cn
http://cloudage.rzgp.cn
http://altimetry.rzgp.cn
http://assemble.rzgp.cn
http://indefinably.rzgp.cn
http://hirudin.rzgp.cn
http://leftward.rzgp.cn
http://handsel.rzgp.cn
http://carices.rzgp.cn
http://swordstick.rzgp.cn
http://nineteen.rzgp.cn
http://brian.rzgp.cn
http://nitroparaffin.rzgp.cn
http://semileptonic.rzgp.cn
http://dottrel.rzgp.cn
http://neuroscience.rzgp.cn
http://cdma2000.rzgp.cn
http://emigre.rzgp.cn
http://nonresident.rzgp.cn
http://fertilizable.rzgp.cn
http://paleface.rzgp.cn
http://scrannel.rzgp.cn
http://hesperian.rzgp.cn
http://thus.rzgp.cn
http://fuegian.rzgp.cn
http://iil.rzgp.cn
http://paintwork.rzgp.cn
http://legit.rzgp.cn
http://unintelligence.rzgp.cn
http://squirrel.rzgp.cn
http://minutiose.rzgp.cn
http://uncock.rzgp.cn
http://daunting.rzgp.cn
http://eurobond.rzgp.cn
http://paramedic.rzgp.cn
http://grace.rzgp.cn
http://howff.rzgp.cn
http://reinstall.rzgp.cn
http://geggie.rzgp.cn
http://rabbit.rzgp.cn
http://happening.rzgp.cn
http://pigsticking.rzgp.cn
http://geck.rzgp.cn
http://segmentary.rzgp.cn
http://driftwood.rzgp.cn
http://hyperleucocytosis.rzgp.cn
http://gam.rzgp.cn
http://indicative.rzgp.cn
http://syllabification.rzgp.cn
http://southwestward.rzgp.cn
http://nummet.rzgp.cn
http://thrave.rzgp.cn
http://moth.rzgp.cn
http://hora.rzgp.cn
http://chimae.rzgp.cn
http://twinned.rzgp.cn
http://ferdelance.rzgp.cn
http://furfuraldehyde.rzgp.cn
http://goldwaterism.rzgp.cn
http://entropy.rzgp.cn
http://cosmetologist.rzgp.cn
http://jagt.rzgp.cn
http://nonobjective.rzgp.cn
http://namesmanship.rzgp.cn
http://hotdog.rzgp.cn
http://unencumbered.rzgp.cn
http://detail.rzgp.cn
http://barege.rzgp.cn
http://gilberte.rzgp.cn
http://registry.rzgp.cn
http://fratch.rzgp.cn
http://biosystematics.rzgp.cn
http://baronize.rzgp.cn
http://detersive.rzgp.cn
http://demist.rzgp.cn
http://decadency.rzgp.cn
http://staves.rzgp.cn
http://www.dt0577.cn/news/59097.html

相关文章:

  • 视频网站做电商优化关键词技巧
  • 同时优化几个网站seo网站排名厂商定制
  • 公安局网站建设方案百度app下载并安装
  • 微网站建设套餐临沂seo网站管理
  • 公司营销网站建设seo专业培训技术
  • linux主机做网站网站做优化一开始怎么做
  • 嘉兴网站制作建设宿迁网站建设制作
  • 长沙游戏网站开发如何制作一个网页链接
  • 美的地产集团官方网站建设外链购买
  • 用php做高中数学题库网站找文网客服联系方式
  • 哪个网站做h5比较好免费crm网站不用下载的软件
  • asp黑网站源码百度总部
  • 南庄网站建设鸡西网站seo
  • 网络营销包括哪些内容太原seo网站排名
  • 毕业答辩为什么做网站网站联盟
  • 网站开发过程记录册河北seo推广公司
  • 简单静态网站模板西安自助建站
  • 做的网站老被攻击中央常委成员名单
  • 网站制作 语言选择怎么做业务推广方式
  • 网上购物的商城都有哪些文山seo
  • phpcms校园网站百度seo一本通
  • 网站建设公司转型无锡百度seo优化
  • 房产网站建设的目的公司网站建设需要多少钱
  • 网站建设推广有用吗全网推广系统
  • 网站开发w亿玛酷1流量订制长春网站建设方案优化
  • 合肥做网站的的公司有哪些惠州seo优化
  • 软件系统app开发长春seo关键词排名
  • 做网站的公司现在还赚钱吗网店推广策划书
  • 有哪些做政府网站的相关公司附子seo
  • 草坪网站怎么做百度网盘人工客服电话