From 1e68f6e402aabef10b57ae5f6cb0afb1b967e0ac Mon Sep 17 00:00:00 2001 From: Jaisel Rahman Date: Sat, 23 May 2020 23:06:08 +0530 Subject: [PATCH] feat: dirs paging only below android 10 --- .../filepicker/activity/DirSelectActivity.java | 16 +++++++--------- .../filepicker/adapter/FileGalleryAdapter.java | 3 --- .../filepicker/model/DirDataSource.java | 16 ++++++++++++++++ 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/filepicker/src/main/java/com/jaiselrahman/filepicker/activity/DirSelectActivity.java b/filepicker/src/main/java/com/jaiselrahman/filepicker/activity/DirSelectActivity.java index 77186ae..7f44fe3 100644 --- a/filepicker/src/main/java/com/jaiselrahman/filepicker/activity/DirSelectActivity.java +++ b/filepicker/src/main/java/com/jaiselrahman/filepicker/activity/DirSelectActivity.java @@ -46,10 +46,10 @@ import com.jaiselrahman.filepicker.R; import com.jaiselrahman.filepicker.adapter.DirListAdapter; import com.jaiselrahman.filepicker.config.Configurations; -import com.jaiselrahman.filepicker.model.MediaFileLoader; import com.jaiselrahman.filepicker.model.Dir; import com.jaiselrahman.filepicker.model.DirViewModel; import com.jaiselrahman.filepicker.model.MediaFile; +import com.jaiselrahman.filepicker.model.MediaFileLoader; import com.jaiselrahman.filepicker.view.DividerItemDecoration; import java.io.File; @@ -202,14 +202,12 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { new MediaScannerConnection.OnScanCompletedListener() { @Override public void onScanCompleted(String path, final Uri uri) { - if (uri != null) { - runOnUiThread(new Runnable() { - @Override - public void run() { - viewModel.refresh(); - } - }); - } + runOnUiThread(new Runnable() { + @Override + public void run() { + viewModel.refresh(); + } + }); } }); } else { diff --git a/filepicker/src/main/java/com/jaiselrahman/filepicker/adapter/FileGalleryAdapter.java b/filepicker/src/main/java/com/jaiselrahman/filepicker/adapter/FileGalleryAdapter.java index bd393a4..de71eb2 100644 --- a/filepicker/src/main/java/com/jaiselrahman/filepicker/adapter/FileGalleryAdapter.java +++ b/filepicker/src/main/java/com/jaiselrahman/filepicker/adapter/FileGalleryAdapter.java @@ -32,7 +32,6 @@ import androidx.paging.AsyncPagedListDiffer; import androidx.paging.PagedList; import androidx.recyclerview.widget.AsyncDifferConfig; -import androidx.recyclerview.widget.AsyncListDiffer; import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.ListUpdateCallback; import androidx.recyclerview.widget.RecyclerView; @@ -49,7 +48,6 @@ import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.List; import java.util.Locale; import static android.os.Environment.DIRECTORY_MOVIES; @@ -78,7 +76,6 @@ public FileGalleryAdapter(Activity activity, int imageSize, boolean showCamera, this.showCamera = showCamera; this.showVideoCamera = showVideoCamera; - setDiffer(differ); glideRequest = Glide.with(this.activity) diff --git a/filepicker/src/main/java/com/jaiselrahman/filepicker/model/DirDataSource.java b/filepicker/src/main/java/com/jaiselrahman/filepicker/model/DirDataSource.java index a6d2745..187a4c4 100644 --- a/filepicker/src/main/java/com/jaiselrahman/filepicker/model/DirDataSource.java +++ b/filepicker/src/main/java/com/jaiselrahman/filepicker/model/DirDataSource.java @@ -41,6 +41,8 @@ import static android.provider.MediaStore.MediaColumns.BUCKET_ID; import static android.provider.MediaStore.MediaColumns.DATA; import static android.provider.MediaStore.MediaColumns.DATE_ADDED; +import static android.provider.MediaStore.MediaColumns.DATE_MODIFIED; +import static android.provider.MediaStore.MediaColumns.DATE_TAKEN; import static android.provider.MediaStore.MediaColumns.SIZE; import static com.jaiselrahman.filepicker.model.MediaFileDataSource.appendDefaultFileSelection; import static com.jaiselrahman.filepicker.model.MediaFileDataSource.appendFileSelection; @@ -131,6 +133,10 @@ public void loadRange(@NonNull LoadRangeParams params, @NonNull LoadRangeCallbac } private List getDirs(int offset, int limit) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + return getDirsQ(offset); + } + Cursor data = ContentResolverCompat.query(contentResolver, uri, projection, selection, selectionArgs, sortOrder + " LIMIT " + limit + " OFFSET " + offset, null); @@ -138,6 +144,16 @@ private List getDirs(int offset, int limit) { return DirLoader.getDirs(data, configs); } + private List getDirsQ(int offset) { + if (offset != 0) return Collections.emptyList(); + + Cursor data = ContentResolverCompat.query(contentResolver, uri, projection, + selection, selectionArgs, + sortOrder, null); + + return DirLoader.getDirs(data, configs); + } + private static String[] getDirProjection() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { return DirLoader.DIR_PROJECTION;