自学安卓编程权威指南(十六)

本文详细介绍了在安卓编程中如何实现数据绑定和MVVM架构。通过创建BeatBoxActivity,使用RecyclerView和数据绑定工具,实现了动态界面和ViewModel类。在数据绑定过程中,涉及了布局文件的改造、绑定类的生成以及视图模型的创建,以达到提高代码可读性和测试性的目的。同时,还探讨了如何使用和管理assets资源,包括创建资产目录、访问资源以及播放声音文件。最后,通过数据观察确保视图和模型之间的同步更新。
摘要由CSDN通过智能技术生成

这一章来说数据绑定和MVVM

这边会学到数据绑定这个新工具,然后实现Model-View-View-Model新架构,还会使用资源系统存储声音文件

在设计时我们需要知道控制器到底做了哪一些工作,再把这些工作拆分到独立的小类中,让一个个拆开的小类协同工作

,如何确定控制器的不同使命,我们应该确定自己的架构。

对于mvvm架构来说,它把控制器的臃肿的代码抽到布局文件里,让开发人员很清楚知道哪些是动态界面,同时它也可以抽出部分动态控制器代码放在ViewModel类中,这就方便了开发测试和验证

一首先,先创建一个名为BeatBoxActivity的空activity,然后这边需要用到RecyclerView,所以这边需要对它添加依赖

,应用会显示一排排播放声音的按钮,因此就需要两个布局文件,,分别用于网格和按钮

(1)首先先创建RecyclerView的布局文件,把导引生成的布局文件改名为fragment——beat_box.xml,然后对于创建主布局文件,<android:support.v7.widget.RecyclerView

   xmlns:android="http://schamas.android.com/apk/res/android"

             android:id="@+id/recycler_view"

             android:layout_width="match_parent"

             android:layout_height="match_parent"/>

(2)然后创建BeatBoxFragment

public class BeatBoxFragment extends Fragment {

public static BeatBoxFragment newInstance(){

return new BeatBoxFragment();

}

}

(3)在这边清空之前建立的BeatBoxActivity的内容,然后让它去继承之前项目的SingleFragmentActivity {

protected Fragment createFragment(){

return BeatBoxFragment.newInstance();

}

}

二下面是来实现简单的数据绑定

(1)这边要把实例化fragment_beat_box.xml和RecyclerView关联起来,这次我们用数据绑定来实现,首先需要要app/build.gradle文件里面启动数据绑定

在buildType的里面添加下面的代码

dataBinding{

enabled = true

}

下面的行为会打开IDE的整合功能,允许你使用数据绑定产生的类,并把他们整合到编译中去

(2)要在布局中使用数据绑定,那么就要把一般布局改造成数据绑定布局,具体的做法就是把整个布局定义放入<layout>标签中去

如下面的代码

<layout

xmlns:android="http://schamas.android.com/apk/res/android"

<android:support.v7.widget.RecyclerView

             android:id="@+id/recycler_view"

             android:layout_width="match_parent"

             android:layout_height="match_parent"/>

</layout>

<layout>告诉数据绑定工具“这个布局由你决定”接到任务后,数据绑定工具就会帮我们生成一个绑定类,新生成的绑定类默认以布局文件来命名,就像现在 fragment_beat_box.xml布局文件就生成了FragmentBeatBoxBinding这个绑定类

这个就是用来做数据绑定的类,

(3)现在实例化视图层级结构时,不再使用LayoutInflater,而是实例化FragmentBeatBoxBinding类,在一个叫为getRoot()的getter的方法中,FragmentBeatBoxBinding引用布局视图结构,而且也会引用那些在布局文件中以android:id标签引用的其他视图

所以此时这个绑定类有两个引用,getRoot()和recyclerView,前者是指整个布局,后面是指RecyclerView.

(4)现在就是来使用这个绑定类了,在BeatBoxFragment里覆盖onCreateView()方法然后使用DataBindingUtil实例化FragmentBeatBoxBinding,如下面代码

public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){

FragmentBeatBoxBinding binding = DataBindingUtil.inflate(inflater,R.layout.fragment_beat_box,cotainer,false);

return binding.getRoot();

}

(5)实例化绑定类后就可以来获取和设置RecyclerView了

public View onCreateView(LayoutInflater inflater,ViewGr

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值