为什么即使更改了值也没有调用地图实时数据?

问题描述 投票:0回答:1

我是MVVM和Android体系结构组件的新手。所以我有这样的存储库

object RestaurantRepository {

    val restaurants : LiveData<ArrayList<Restaurant>> = RestaurantClient.restaurants

    private var count : LiveData<Int> = Transformations.map(restaurants) {

        Log.d("debugLog","map")

        it.size
    }

    fun searchRestaurants(query: String, latitude:Double, longitude: Double) {

        mQuery = query

        RestaurantClient.searchRestaurants(
            query = query,
            latitude = latitude,
            longitude = longitude,
            start = 0
        )
    }

}

而且我有客户使用翻新来获取数据

object RestaurantClient {

    val restaurants = MutableLiveData<ArrayList<Restaurant>>()


    private val restaurantService = RetrofitServiceGenerator.getInstance(RestaurantAPI::class.java)

    fun searchRestaurants(query: String, latitude:Double, longitude: Double, start: Int) {

        val call = restaurantService.searchRestaurants(
            radius = 2000,
            query = query,
            latitude = latitude,
            longitude = longitude,
            start = start,
            count = NUMBER_OF_DOCUMENT_PER_PAGE
        )



        call.enqueue(object: Callback<RestaurantListBaseResponse> {

            override fun onFailure(call: Call<RestaurantListBaseResponse>, t: Throwable) {

                // if there is an error while sending data to server or while parsing the data

            }

            override fun onResponse(call: Call<RestaurantListBaseResponse>, response: Response<RestaurantListBaseResponse>) {

                if (response.isSuccessful) {

                    val listOfRestaurants = response.body()!!.restaurants
                    val restos = ArrayList<Restaurant>()

                    for (i in listOfRestaurants ) {
                        restos.add(i.restaurant)
                    }

                    restaurants.postValue(restos)


            }

        })


    }

[我相信,我从服务器获取数据并将其通过restaurants中的RestaurantClient MutableLiveData发布。所以我认为因为Livedata发生了变化,所以它将触发Transformations.map,但是登录count的信息永远不会出现在我的Logcat中。

此计数仅在RestaurantRepository中是私有的,这仅用于测试,因为我仍在学习实时数据

android android-livedata android-architecture-components android-jetpack mutablelivedata
1个回答
0
投票
[The transformations aren't calculated unless an observer is observing the returned LiveData object.因此,您需要订阅count LiveData才能使转换工作。
© www.soinside.com 2019 - 2024. All rights reserved.