亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通知 RecyclerView 適配器內的計時器內的數據已更改

如何通知 RecyclerView 適配器內的計時器內的數據已更改

MMTTMM 2024-01-28 16:45:32
我有一個 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 線程上運行,對其他布局的更改不會造成任何崩潰!



查看完整回答
反對 回復 2024-01-28
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號