在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调用,以便数据不会重复。 试试上面的代码
- Kotlin – 如何为RecyclerVIew实现ItemClickListener
- 从子包 – Kotlin访问生成的Apollo类
- 你如何为MediaPlayer声明一个全局变量?
- 在kitkat设备上开始活动
- Android Studio 3.0支持Kotlin:Activity as Context
- Android Espresso IntentsMatcher适用于新设备,但不算旧
- 使用IntelliJ的Gluon / JavaFXPorts的Android应用程序 – Android设置不完整
- Firebase AdMob引发IncompatibleClassChangeError
- 如何引用Anko DSL中的其他视图?