我如何通知 RecyclerView Adapter 内的 Timer 数据已更改

How can I inform the RecyclerView that data has changed from within a Timer inside the Adapter

我有一个 RecyclerView,您可以在其中向左滑动项目以将其归档。它会首先显示撤消布局,然后在 2 秒后将其存档(现在对于第一次测试,我只是删除该项目)。问题是,从计时器线程使用 notifyItemRemoved(pos) 会使应用程序崩溃,表示只有创建视图的原始线程(UI 线程)才能触及它的视图。有什么技巧可以解决这个问题吗?我在 RecyclerView.Adapter extended class.

的 ViewHolder 中使用计时器

定时器代码如下:

archiveTimer.schedule(new TimerTask() {
    @Override
    public void run() {
        notesController.remove(position);
        notesList.remove(position);
        queuedForArchive = false;
    }
}, 2000);

在活动中你可以使用 runOnUiThread 但我也不能使用它(函数 MainActivity.runOnUiThread(Runnable) 不是静态的所以我不能在 MainActivity 之外使用它)

我发现了一种非常棘手的方法,可以在不使用计时器的情况下在 UI 线程上发生定时事件。我注意到所有的动画师实际上都是定时的,你可以在任何你想要的动画师上实现 onAnimationEnd,所以我制作了一个 ObjectAnimator,它将不可见视图的 alpha 从 1 更改为 1(无变化)并将其持续时间设置为我需要的 2000 毫秒。我使用了我想在该 Animator 的 onAnimationEnd() 内的计时器中使用的相同代码,并且它有效!!!所有代码都在 UI 线程上 运行 并且对其他布局的更改没有造成任何崩溃!