文章目录
- 前言
- 一.实验步骤
- 二、模拟器运行结果
- 三、真机运行结果
前言
本章,我们学习数据绑定(data binding)这个新工具。数据绑定只是一个工具,它不会告诉 你怎么去用。不过,我们知道,所以,我们会教你如何在项目里使用它:实现Model-View-ViewModel (MVVM)新架构。此外,你还会学习使用资源系统(assets system)存储声音文件。
我们将在本章开始开发一个叫作BeatBox的新应用。
一.实验步骤
1 创建主布局文件(res/layout/fragment_beat_box.xml)
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
2 创建BeatBoxFragment(BeatBoxFragment.java)
现在,在com.bignerdranch.android.beatbox包中,创建名为BeatBoxFragment的新Fragment.
public class BeatBoxFragment extends Fragment {
public static BeatBoxFragment newInstance() {
return new BeatBoxFragment();
}
}
这个fragment实现先空着,稍后处理。
3启用数据绑定(app/build.gradle)
versionCode 1
versionName "1.0"
testinstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}
dependencies {
4 把一般布局改造为数据绑定布局(res/layout/fragment_beat_box.xml)
<layout
xmlns:android="http://schemas.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>
5 实例化绑定类(BeatBoxFragment.java)
public class BeatBoxFragment extends Fragment {
public static BeatBoxFragment newinstance() {
return new BeatBoxFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
FragmentBeatBoxBinding binding = DataBindingUtil .
inflate(inflater, R.layout.fragment_beat_box, container, false);
return binding.getRoot();
}
}
public class BeatBoxFragment extends Fragment {
public static BeatBoxFragment newinstance() {
return new BeatBoxFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
FragmentBeatBoxBinding binding = DataBindingUtil .
inflate(inflater, R.layout.fragment_beat_box, container, false);
binding.recyclerView.setLayoutManager(new GridLayoutManager(getActivity(),
3));
return binding.getRoot();
}
}
public class