我有一個 RecyclerView,您可以在其中向左滑動項目以將其存檔。它首先會顯示撤消布局,然后 2 秒后它將被存檔(現在,對于第一個測試,我只是刪除該項目)。問題是,notifyItemRemoved(pos)從 Timer 線程使用會導致應用程序崩潰,表明只有創建視圖的原始線程(UI 線程)才能觸摸其視圖。有什么技巧可以解決這個問題嗎?我在 RecyclerView.Adapter 擴展類的 ViewHolder 中使用計時器。這是定時器的代碼:archiveTimer.schedule(new TimerTask() { @Override public void run() { notesController.remove(position); notesList.remove(position); queuedForArchive = false; }}, 2000);在活動中,您可以使用 runOnUiThread 但我也不能使用它(函數MainActivity.runOnUiThread(Runnable)不是靜態的,所以我不能在 MainActivity 之外使用它)
1 回答

慕無忌1623718
TA貢獻1744條經驗 獲得超4個贊
我發現了一種非常棘手的方法,可以在不使用計時器的情況下在 UI 線程上發生定時事件。我注意到所有動畫師實際上都是定時的,你可以在任何你想要的動畫師上實現 onAnimationEnd ,所以我制作了一個 ObjectAnimator ,將不可見視圖的 alpha 從 1 更改為 1 (沒有變化),并將其持續時間設置為我需要的 2000 毫秒。我使用了我想在該動畫器的 onAnimationEnd() 內的計時器中使用的相同代碼,并且它有效!所有代碼都在 UI 線程上運行,對其他布局的更改不會造成任何崩潰!
添加回答
舉報
0/150
提交
取消