【问题标题】:Kotlin getting api response with foreachKotlin 使用 foreach 获取 api 响应
【发布时间】:2020-07-02 23:06:31
【问题描述】:

所以,我要做的是从 api 获取信息并将其添加到 model: MutableList 然后将模型信息设置为回收器视图。但问题是,在 api 获得所有响应之前调用了回收器视图,所以我的视图是空的。这是我总结的,如果我错了,请纠正我。但如果不是,我该如何解决这个问题?

class FavouritesFragment(myContext : HomeActivity, fvts: ArrayList<String>): Fragment() {
    var activity = myContext
    var favourites = fvts
    var model : MutableList<CurrentWeatherModel> = mutableListOf()

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        return inflater.inflate(R.layout.fragment_favourites, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        init()
    }

    private fun init() {
        model.clear()
        favourites.forEach {
            getForecastModel(it)}

        Log.d("other", model.size.toString())
        favouritesRecyclerView.layoutManager = LinearLayoutManager(activity)
        val adapter = CurrentRecyclerViewAdapter(model, activity)
        favouritesRecyclerView.adapter = adapter
    }

    private fun getForecastModel(value: String?) {
        if (!value.isNullOrEmpty()) {
            DataLoader.getRequestForQuery("weather", value, "a77840cefd5a443793bd5e6b54776905", object: CustomCallback{
                override fun onSuccess(result: String) {
                    if (result != "null") {
                        var converted = Gson().fromJson(result, CurrentWeatherModel::class.java)
                        model.add(converted)
                    }
                }
            })
        }
    }
}

【问题讨论】:

    标签: android android-studio kotlin


    【解决方案1】:

    您需要通知适配器数据已更改,您可以通过在数据更改时调用adapter.notifyDataSetChanged() 来实现。

    所以你需要在将数据添加到列表后添加这一行

    model.add(converted)
    adapter.notifyDataSetChanged()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-24
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 2021-06-12
      • 2020-02-01
      • 1970-01-01
      相关资源
      最近更新 更多