MVC模式

到目前为止MVC模式已得到了广泛的应用。各种类型的程序(桌面程序、Web程序、移动程序等)都设计了MVC模式。著名的Java Web框架Struts就是一套不折不扣的MVC框架。MVC的主要目的是使程序中的数据和界面分离,其中M表示模型(Model,也就是数据),V表示试图(View,也就是界面),C表示控制器(Controller,用于控制M和V之间的联系)。Android SDK同样采用了MVC模式来展现数据和界面的关系。那么Android SDK中有哪些组件使用到了MVC模式,其基本原理是什么?

MVC的基本原理就是通过Controller连接Model和View的。也就是说,当View中显示的数据变化时(如ListView要删除某个列表项),会通知Controller,而不是直接通知Model。这时Controller接到View的通知后,会在Model中采取相应的动作(如删除数据库中的某条记录)。如果模型的数据发生变化(如插入、删除数据库中的记录),会将变化通知Controller,然后Controller会通知View重新显示数据。

使用MVC模式可以将显示部分与数据部分分离,这样当更新View或Model时可以不影响对方,更有利于程序的维护。

在Android SDK中使用MVC模式的组件非常多。例如,所有的列表控件(ListView、Spinner、GridView等)都采用MVC模式与数据交互。在Android中MVC中的V就代表这些组件,而M则代表各种数据源及操作数据库的库。C则代表Adapter类。Android中的Adapter类分很多程度,但都拥有共同的接口。这些Adapter类主要包括BaseAdapter、SimpleAdapter、ArrayAdapter、CursorAdapter等。它们分别对应不同的数据源,ArrayAdapter对应List集合和数据数据源,而CursorAdapter对应Cursor对象(一般是从数据库中获取的记录集)。这些Adapter类都是需要使用GetView方法返回当前列表项显示的View对象。当Model发生改变时,会调用BaseAdapter.notifyDataSetChanged()方法通知组件数据已变化,这时Adapter回调用getView方法用于重新显示组件中的内容。当组件中显示的数据变化时,如删除一个列表项,组件会通过Adapter中的方法删除Model中相应的记录,然后再调用BaseAdapter.notifyDataSetChanged()方法使组件中显示的数据发生变化。总言之,无论数据变化还是组件中显示的数据发生变化,都需要将Adapter作为桥梁来达到View和Model之间同步的目的。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值