簡體   English   中英

當 RecyclerView 項目存在於 android 的 ViewPager2 中時,如何延遲加載 RecyclerView 項目?

[英]How to delay loading of RecyclerView items when it is present in ViewPager2 in android?

我正在使用 ViewPager2 在各個片段中使用 RecyclerView 顯示片段中的數據。 有2個片段。 每個片段包含 1 個 RecyclerView。 一切正常,只是一個小問題,當我啟動包含此 ViewPager2 的活動時,如果存在大量項目,則活動開始非常緩慢。 我知道對於整個場景還有其他解決方案,例如使用 ConstraintLayout 減少復雜的 UI 等。但就我而言,我優化了所有這些,但我的活動啟動時間仍然很慢。

所以現在我想通過以下方式做這些事情:

  1. 加載活動 -> 顯示正在加載... TextView -> 在調用內部 RecyclerView 的 notifyDatasetChanged() 之前等待一段時間

所以我這樣做是使用:

  final MaterialTextView loadingMTV = findViewById(R.id.loadingMTV);
    loadingMTV.postDelayed(new Runnable() {
        @Override
        public void run() {
            loadingMTV.setVisibility(View.GONE);
            recyclerViewAdapter.setTasks();
            completedRecyclerViewAdapter.setTasks();

            //setTasks() will contain notifyDatasetChanged() related logic
        }
    },500);

因此它會將內部內容加載延遲 500 毫秒。 現在我的活動啟動時間和往常一樣。 每件事都很好。 只是一個問題,我使用了 500 毫秒作為延遲時間。 我不想要這個硬編碼的值。 那么如何在整個情況下使用適當的延遲時間呢?

  1. 在activity內部創建組件——創建activity本身的過程,所以在創建所有內部View之前,不會創建Activity本身。 在這里閱讀更多

  2. 通過將復雜而冗長的計算轉移到單獨的線程來解決這些問題。 您可以使用開箱即用的異步通信機制,例如 RxJava。 因此,在另一個線程上,您創建視圖組件,而在 UI 線程上,您只顯示它們並與它們交互。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM