适配器复制在Recycler视图上

时间:2017-09-06 08:12:35

标签: android kotlin

我是编程新手,我的问题是当我在导航上切换标签时。重新加载时,我的数据会重复。

httpClient.get(url, object : JsonHttpResponseHandler() {
            override fun onSuccess(statusCode: Int, headers: Array<out Header>, response: JSONArray) {
                for (i in 0 until response.length()) {
                    val seminar = Seminar.fromJson(response.getJSONObject(i))

                    seminarsAdapter.add(SeminarItem(seminar))
                }
            }

            override fun onFailure(statusCode: Int, headers: Array<out Header>?, responseString: String?, throwable: Throwable?) {
                Log.d("Seminars Fragment", throwable?.localizedMessage)
            }
        })

3 个答案:

答案 0 :(得分:0)

如果seminarsAdapter已有某些数据,您将添加到现有数据集中。

或许,在您的clear类型中添加seminarsAdapter方法,然后在onSuccess(...)中调用它。

答案 1 :(得分:0)

httpClient.get(url, object : JsonHttpResponseHandler() {
        override fun onSuccess(statusCode: Int, headers: Array<out Header>, 
response: JSONArray) {
if(seminarsAdapter.size()>0){
seminarsAdapter.clear();
}
            for (i in 0 until response.length()) {
                val seminar = Seminar.fromJson(response.getJSONObject(i))

                seminarsAdapter.add(SeminarItem(seminar))
            }
        }

        override fun onFailure(statusCode: Int, headers: Array<out Header>?, responseString: String?, throwable: Throwable?) {
            Log.d("Seminars Fragment", throwable?.localizedMessage)
        }
    })

清除研讨会关于api调用响应的适配器列表,以便数据不会重复。 试试上面的代码

答案 2 :(得分:0)

您可以在添加新项目之前清除列表,但如果您希望将来逐个添加或更多逻辑,我建议您在DiffUtil中添加Adapter管理Adapter

的内容
  

DiffUtil是一个实用程序类,可以计算两个列表之间的差异,并输出一个更新操作列表,将第一个列表转换为第二个列表。它可用于计算RecyclerView适配器的更新。

查看this post,了解如何与AdapterRecyclerView

一起实施