RecyclerView滚动使我的物品消失了

时间:2018-10-13 09:44:13

标签: android android-recyclerview kotlin android-adapter

我有RecyclerViewAdapterRecyclerView旁边是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)
            }
        }

0 个答案:

没有答案