在Recycler视图上复制适配器
嗨新编程和我的问题是当我切换标签上我的导航。 我的数据重新加载时重复。
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) } })
您可以在添加新项目之前清除列表,但是如果您希望将来逐一添加它们或者更多的逻辑,我建议您在Adapter
添加DiffUtil
以管理Adapter
的内容
DiffUtil是一个实用程序类,可以计算两个列表之间的差异,并输出将第一个列表转换为第二个列表的更新操作列表。它可以用于计算RecyclerView适配器的更新。
看看这个帖子 ,它解释了如何与Adapter
和RecyclerView
一起实现它
如果seminarsAdapter
已经有一些数据,您将添加到现有的一组数据。
也许,添加一个clear
方法到您的seminarsAdapter
适配器类型,并在onSuccess(...)
之前调用它。
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调用,以便数据不会重复。 试试上面的代码
- Android Studio – java.io.IOException:无法生成v1签名
- 在Android Studio中将代码从Java转换为Kotlin
- Kotlin智能转换不适用于LinearLayout.LayoutParams
- 折叠时CollapsingToolbarLayout显示中断的标题
- 如何在anko中为按钮设置图标(可绘制)?
- 为什么在从Kotlin调用方法时,在logcat中看不到任何有用的东西?
- Firebase存储的OnSuccessListener回调没有调用
- Android Studio kaptDebugKoltin内部编译器错误
- Android工作室是制作手机游戏的充足工具吗?