Android RecycleServiceAdapter-列表正在更新,但视图未更新

Android RecycleServiceAdapter-列表正在更新,但视图未更新,android,firebase-realtime-database,kotlin,android-tv,Android,Firebase Realtime Database,Kotlin,Android Tv,我为Android TV制作了一个应用程序,它显示Firebase中的项目列表 预期行为: 对数据库进行任何更改后,获取数据库并更新视图 怎么了? 直到我锁定设备的那一刻,数据被正确地获取和显示。之后,它立即停止仅刷新视图。我在适配器类中添加了一些“Log.d”来打印更新的列表,列表会按原样更新。所以,总而言之,数据被正确地提取,列表被更新,但视图没有(它保持在设备锁激活之前的列表状态) 代码: 已更改列表的后端回调: override fun onDataSetChanged(prepare

我为Android TV制作了一个应用程序,它显示Firebase中的项目列表

预期行为:
对数据库进行任何更改后,获取数据库并更新视图

怎么了?
直到我锁定设备的那一刻,数据被正确地获取和显示。之后,它立即停止仅刷新视图。我在适配器类中添加了一些“Log.d”来打印更新的列表,列表会按原样更新。所以,总而言之,数据被正确地提取,列表被更新,但视图没有(它保持在设备锁激活之前的列表状态)

代码:
已更改列表的后端回调:

 override fun onDataSetChanged(prepareList: List<Long>) {
    mPrepareAdapter.setOnDataSetChanged(prepareList)
}
onResume()
中创建适配器的新实例(是的,我知道我们不应该这样做),将上下文传递给适配器?没有任何帮助,RecyclerView仍然保持空白

因此,与扩展
RecyclerView.Adapter
FirebaseRecyclerAdapter
的列表相比,唯一的区别在于,在前一个视图中,旧列表正在显示,而在后一个视图中,引用正在丢失(?不是?)

最后:有趣的是。这并不是在所有的移动设备上都能正常工作,即使是在同一个安卓版本上。这个错误发生在真实的Android电视和Android电视模拟器(其中一个带有Google API)上

我知道这是一篇很长的文章,要读的东西很多,对此我很抱歉,但是你有什么想法吗?我可以做更多的事情来修复它吗?第三天,我一直在尝试解决这个问题,但我没有想到更多的问题。

在您的
onResume()
方法中,执行
notifyDataSetChanged()
,因为您锁定了设备,当您返回时,它应该会触发
onResume()
,然后,您可以刷新视图

在您的
onResume()
方法中,执行
notifyDataSetChanged()
,因为您锁定了设备,当您返回时,它应该触发
onResume()
,然后您可以刷新视图


使用firestore recycler视图怎么样?每当有新条目出现时,它会自动更新视图added@Mr.Patel我还没有在这个项目上尝试过,但我更想知道在这个代码中我可以在哪里完成我的任务,本地数据库也可能出现这种情况。为什么不使用onResume方法?请检查我的答案,如果问题没有解决,请继续检查。我强烈建议您使用firestore recycler视图。是否有错误日志?使用firestore recycler视图如何?只要有新条目出现,它将自动更新视图added@Mr.Patel我还没试过但在这个项目上,我更想知道我可以在这段代码中做什么,因为这也可能发生在本地数据库上。你为什么不使用onResume方法?请检查我的答案,如果问题没有解决,我强烈建议你使用firestore recycler视图。有错误日志吗?嘿!我刚刚更新了我的主要帖子。不幸的是,它不能解决我的问题嘿!我刚刚更新了我的主要帖子。不幸的是,这并不能解决我的问题
var prepareList: MutableList<Long> = ArrayList()
...
fun setOnDataSetChanged(list: List<Long>){
    prepareList.clear()
    prepareList.addAll(list)
    this.notifyDataSetChanged()
    Log.d("prepareListAdapter", prepareList.toString())
}
private LayoutInflater inflater;

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    if (inflater == null) {
        Context context = viewGroup.getContext();
        this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    View view = inflater.inflate(R.layout.item_textview_prepare, viewGroup, false);
    return new ViewHolder(view);
}