LiveData 的基本使用

原文地址:https://www.jianshu.com/p/dab2ee97d680
第一点:
LiveData 与 Room数据库一起使用
类似于这种

  @Query("SELECT * FROM plants ORDER BY name")
    fun getPlants(): LiveData>

    @Query("SELECT * FROM plants WHERE growZoneNumber = :growZoneNumber ORDER BY name")
    fun getPlantsWithGrowZoneNumber(growZoneNumber: Int): LiveData>

    @Query("SELECT * FROM plants WHERE id = :plantId")
    fun getPlant(plantId: String): LiveData

返回 LiveData 当数据库信息改变时 会自动监听到数据改变 触发监听

第二点:switchMap 使用
viewModel 代码

    val isChange = MutableLiveData();
    val switchMap = Transformations.switchMap(isChange){
        var index = MutableLiveData();
        if(it){
            index.value = 1
            return@switchMap index;
        }else{
            index.value = 2
            return@switchMap index;
        }
    };

activity 代码

      
        viewModel.isChange.value = true
        binding.btnGotoGarden.setOnClickListener{
            viewModel.isChange.value = !viewModel?.isChange.value!!;
        };

       viewModel.isChange.observe(this, Observer {
            Log.i("ccccccccc","isChange==="+it)
        })

        viewModel.switchMap.observe(this, Observer {
            Log.i("ccccccccccc","index==="+it)
        })

改变isChange 中的值 switchMap 也会调用 前提是必须在activity中简历监听 switchMap 返回新的LiveData 根据不同的条件返回不同的LiveData

Map的代码 Map也是返回新的LiveData 改变的是原来LiveData 中的类型

   val mapLive = Transformations.map(isChange){
      return@map "132123"+it
    };

你可能感兴趣的:(LiveData 的基本使用)