소스 검색

call adapter methods in UI thread

otherwise sometimes this exception was thrown:

IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling androidx.recyclerview.widget.RecyclerView
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Marcel Hibbe 3 년 전
부모
커밋
2f35ae19fc
1개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. 7 3
      app/src/main/java/com/nextcloud/talk/components/filebrowser/controllers/BrowserController.kt

+ 7 - 3
app/src/main/java/com/nextcloud/talk/components/filebrowser/controllers/BrowserController.kt

@@ -195,7 +195,6 @@ abstract class BrowserController(args: Bundle) :
     }
 
     override fun listingResult(davResponse: DavResponse) {
-        adapter!!.clear()
         recyclerViewItems = ArrayList()
         if (davResponse.getData() != null) {
             val objectList = davResponse.getData() as List<BrowserFile>
@@ -210,9 +209,10 @@ abstract class BrowserController(args: Bundle) :
 
         FileSortOrder.getFileSortOrder(appPreferences?.sorting).sortCloudFiles(recyclerViewItems)
 
-        adapter!!.addItems(0, recyclerViewItems)
         if (activity != null) {
             activity!!.runOnUiThread {
+                adapter!!.clear()
+                adapter!!.addItems(0, recyclerViewItems)
                 adapter!!.notifyDataSetChanged()
                 changeEnabledStatusForBarItems(true)
             }
@@ -247,7 +247,11 @@ abstract class BrowserController(args: Bundle) :
             selectedPaths.remove(file.parent!! + "/")
             file = File(file.parent!!)
         }
-        adapter!!.notifyDataSetChanged()
+        if (activity != null) {
+            activity!!.runOnUiThread {
+                adapter!!.notifyDataSetChanged()
+            }
+        }
     }
 
     override fun onItemClick(view: View, position: Int): Boolean {