毕设博客(六)

Jetpack四大组件:基础、架构、行为、界面

  • ·LiveData属于Jetpack架构组件里面的,在底层数据库更改时通知视图
  • 采用矢量绘图:点击红色按钮,+1;点击蓝色按钮,-1.

  • 出现红色感叹号,需要在build.gradle里面添加一句话(将以下这句话复制到defaultConfig{}中):

  • 此时,在ViewModel中,需要管理一个LiveData类型的数据:

  • private MutableLiveData<Integer> LikedNumber; //声明
    ViewModelWithLiveData(){
        LikedNumber = new MutableLiveData<>();
        LikedNumber.setValue(0); //LinkedNumber是一个对象类型,要保证它不是空
    }
  • 还需要在MainActivity中设置一个观察者,来检测数据的变化:

  • viewModelWithLiveData.getLikedNumber().observe(this, new Observer<Integer>() {//设置一个观察者,来监听数据的变化
        @Override
        public void onChanged(Integer integer) {//每次数据变化,textview就会相应刷新                            
            textView.setText(String.valueOf(integer));
        }
    });

    运行结果(左图为点击红色按键:+1;右图为点击蓝色按键:-1):

·数据绑定DataBinding:以声明方式将可观察数据绑定到界面元素

做一个功能为按下按键后自增1的累加器,依然要创建一个ViewModel

结果:

对于界面上的每一个控件,都要有一个变量和它进行关联,这比较麻烦,而且在界面发生改变时,代码就需要大量修改,程序比较难维护。使用DataBinding就可以解决这样的问题。

要在build.gradle里面的defaultConfig{}里添加这样一句话:

buildFeatures{
     dataBinding = true
}

activity_main.xml中,第二行代码旁的灯泡,点击,有个”Convert to data binding layout”选项,点击,会在文件中增加两对标签:

<layout><data></data></layout>

 此时,Android Studio会自动帮忙创建一个ActivityMainBinding类,代码可写为:

public class MainActivity extends AppCompatActivity {
    MyViewModel myViewModel;
    ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
        binding.setData(myViewModel);
        binding.setLifecycleOwner(this);
    }
}

还需要在<data></data>标签中添加几行代码:

<data>
    <variable
        name="data"
        type="com.example.databinding.MyViewModel" />
</data>

 结果为:

 

 今天所学的LiveData和dataBinding操作都比较麻烦,也有些抽象,在学的过程中也遇到了一些问题,但是后来通过各种途径也都解决了,终于体会到Android开发也不是一件容易的事,后面还要把这两节的视频反复多看几遍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值