我是编程新手,我的问题是当我在导航上切换标签时。重新加载时,我的数据会重复。
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)
}
})
答案 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,了解如何与Adapter
和RecyclerView