首页 > 解决方案 > RecyclerView 滚动使我的项目消失了

问题描述

RecyclerViewAdapter。旁边RecyclerViewButton它将打开新的Activity(类似布局的形式)以创建新项目到 this RecyclerView。当我创建这个项目时,我调用下面的方法来刷新我的数据。数据在那里,它按预期工作。我已经实现了LinearSnapHelper,如果你拖动它,它RecyclerView捕捉到中心。这会触发项目选择,它将从捕捉的项目中读取数据。

如果数据为,则会出现问题。

我像往常一样通过推送创建新项目Button并成功创建。然后我的RecyclerView包含单个项目。因此,我必须以编程方式将该项目推送几个像素,以触发onScrollStateChangedListenerRecyclerView加载第一个项目的数据。

但是这个小滚动使我的 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)
            }
        }

标签: androidandroid-recyclerviewkotlinandroid-adapter

解决方案


推荐阅读