我有RecyclerView
和Adapter
。 RecyclerView
旁边是Button
,它将打开新的Activity
(类似于布局的形式)以为此RecyclerView
创建新项目。创建此项时,我调用下面的方法来刷新数据。数据在那里,并且按预期工作。我已实施LinearSnapHelper
,并且RecyclerView
项将拖动到中心。这将触发项目选择,并将从捕捉的项目中读取数据。
问题。
我像往常一样通过按下Button
创建新项目,并且创建成功。然后我的RecyclerView
包含一个项目。因此,我必须以编程方式将该项目推几像素,以在我的onScrollStateChangedListener
上触发RecyclerView
来加载第一项数据。
但是这个小滚动使我的recyclerView项消失了。 RV是空的(仅在GUI中)(数据在那里,它们被选中并且一切都很好(以编程方式))。
我什至在onBindViewHolder()
中添加了日志,并在notifyDataSetChanged()
之后立即执行,而我的RecyclerView
在GUI中仍然为空。
如果我评论如果if语句带有滚动,则该项目将在加载了所有数据的情况下出现在recyclerView中,但我必须对其进行滚动(#1-它将更改项目的背景,#2-它将将该项目的数据加载到Singleton变量中)
问题出在哪里?
ObjectCreationActivity:
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)
}
}