android - RecyclerView 滚动使我的项目消失了
问题描述
我RecyclerView
有Adapter
。旁边RecyclerView
是Button
它将打开新的Activity
(类似布局的形式)以创建新项目到 this RecyclerView
。当我创建这个项目时,我调用下面的方法来刷新我的数据。数据在那里,它按预期工作。我已经实现了LinearSnapHelper
,如果你拖动它,它RecyclerView
会捕捉到中心。这会触发项目选择,它将从捕捉的项目中读取数据。
如果数据为空,则会出现问题。
我像往常一样通过推送创建新项目Button
并成功创建。然后我的RecyclerView
包含单个项目。因此,我必须以编程方式将该项目推送几个像素,以触发onScrollStateChangedListener
我RecyclerView
加载第一个项目的数据。
但是这个小滚动使我的 recyclerView 项目消失RV 是空的(仅在 GUI 中)(数据在那里,它们被选中并且一切都很好(以编程方式))。
我什至添加了日志onBindViewHolder()
,它在之后立即执行notifyDataSetChanged()
,我RecyclerView
在 GUI 中仍然是空的。
如果我评论带有滚动的 if 语句,项目将出现在 recyclerView 中并加载所有数据,但我必须滚动它(#1 - 它将更改项目的背景和 #2 - 它将项目的数据加载到 Singleton 变量)。
问题出在哪里?
对象创建活动:
setObjects(objectsJSONArray)
setResult(REFRESH_CODE)
finish()
片段父活动:
if (resultCode == REFRESH_CODE){
createLog("REFRESH_CODE", "isTrue()")
if (((pagerAdapter!!.getItem(1)) as ObjectFragment).view != null){
((pagerAdapter!!.getItem(1)) as ObjectFragment).refreshFragmentData()
}
}
分段:
fun refreshFragmentData(){
recylerViewAdapter.refreshData()
}
适配器:
fun refreshData(){
createLog("Adapter", "Refreshing Data")
createLog("Adapter", adapterObjectList.toString()) //here it contains 1 item
adapterObjectList = Singleton.getInstance(fragment.context!!).objectList //Refreshing list for second time to be sure
notifyDataSetChanged()
if (adapterObjectList.size == 1){
recyclerView.smoothScrollBy(5, 0)
}
}
解决方案
推荐阅读
- vue.js - vue 将共享计算函数编译到单独的包中
- c# - 实体框架成组查询与可为空的外键
- python - 嵌套创建序列化程序中的 Django Rest Framework 错误
- java - 在不使用 try/catch 的情况下检查用户输入的整数/非整数 - Java
- c# - 如何使用 LINQ 和 ASP.NET CORE 查询外键作为过滤器(作为 WHERE 子句)
- css - VS Code CSS Classes 打印在多行上
- macos - 应用程序根据启动方法报告不同的架构
- amazon-web-services - DynamoDBMapper 的 UPDATE 配置意味着什么?
- r - 如何用mlr3中的分支解释GraphLearner的调优结果?
- java - 有没有办法在 Keycloak 中配置 storageProviderTimeout?