AndroidX的意思是android extension libraries, 也就是安卓扩展包
AndroidX其实是Jetpack类库的命名空间
(190条消息) AndroidX初识_Neda Wang的博客-CSDN博客
https://blog.csdn.net/weixin_38261570/article/details/111500044
viewmodel
ViewModel类旨在以注重生命周期的方式存储和管理界面相关的数据,就是根据activity/fragment的生命周期去存储和管理数据的,ViewModel是在Activity真正结束时才被清理掉。
看了下源码 viewmodel内部其实就是一个hashmap的 操作 存储、读取和删除
管理ui的data
每个activity和frgment 对应一个viewmodel 里面包了liveData 双向绑定一般用其子类
MutableLiveData
livedata + databinding 实现双向绑定
DataBinding
首先是布局和activity 绑定
在对应module的build.gradle中,进行如下配置:
android {
...
dataBinding {
enabled true
}
}
这样就配置完毕了。要注意的一点是,如果依赖的库中使用了data binding,那么app module中也需要进行配置
————————————————
版权声明:本文为CSDN博主「mhq42978」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013400743/article/details/52216350
新建一个acticvity 比如 TestActivity
新建一个xml 比如layout_test.xml
android studio 会自动生成一个LayoutTestBinding类
怎么把LayoutTestBinding和TestActivity关联
1.
import com.loong.mvvmexmple.databinding.LayoutTestBinding;
import java.util.concurrent.atomic.AtomicInteger;
public class TestActivity extends AppCompatActivity {
private LayoutTestBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//布局与activity绑定方法1 DataBindingUtil需要alt+enter 导入包
LayoutTestBinding binding = DataBindingUtil.setContentView(this, R.layout.layout_test);
//布局与activity绑定方法2 LayoutTestBinding 是databinding根据布局文件 layout_test.xml 自动生成的
// binding = LayoutTestBinding.inflate(getLayoutInflater());
// setContentView(binding.getRoot());
AtomicInteger count = new AtomicInteger();
binding.tv.setOnClickListener(view -> {
count.getAndIncrement();
binding.tv.setText("点击次数" + count);
Toast.makeText(TestActivity.this, "点击" + count, Toast.LENGTH_SHORT).show();
});
}
}
此时无论布局文件是否被layout 包裹都可以展示
public class FirstFragment extends Fragment {
private FragmentFirstBinding binding;
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState
) {
binding = FragmentFirstBinding.inflate(inflater, container, false);
return binding.getRoot();
}
具体细节过程参考
DataBinding基本使用 - 简书 (jianshu.com)