Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

下了你的工程,用了glide4.8后,发现图片显示是上一次拍的照片 #282

Open
xyStephenZhou opened this issue Aug 2, 2019 · 4 comments

Comments

@xyStephenZhou
Copy link

发现第一次拍照不刷新列表,再一次拍就是上次的图片

@shl0703
Copy link

shl0703 commented Aug 5, 2019

在MediaStoreHelper这个类中onLoadFinished(Loader loader, Cursor data)方法中注释掉data.moveToFirst();这行代码即可。亲测可行

@shl0703
Copy link

shl0703 commented Aug 5, 2019

查询得到的cursor是指向第一条记录之前的,因此查询得到cursor后第一次调用moveToFirst或moveToNext都可以将cursor移动到第一条记录上。

@makecloud
Copy link

参考MediaStoreHelper#onLoadFinished方法中的注释:

       @Override
        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {

            if (data == null)
                return;
            List<PhotoDirectory> directories = new ArrayList<>();

            PhotoDirectory photoDirectoryAll = new PhotoDirectory();
            photoDirectoryAll.setName(context.getString(R.string.__picker_all_image));
            photoDirectoryAll.setId("ALL");

            //data.moveToFirst();
            if (!data.moveToFirst()) {
                return;
            }

            //如果用使用moveFirst做了判断,那么执行moveToNext之前要moveToPrevious。否则会少加载一张照片,也就所谓的显示上一张照片
            data.moveToPrevious();
            while (data.moveToNext()) {

                int imageId = data.getInt(data.getColumnIndexOrThrow(_ID));
                String bucketId = data.getString(data.getColumnIndexOrThrow(BUCKET_ID));
                String name = data.getString(data.getColumnIndexOrThrow(BUCKET_DISPLAY_NAME));
                String path = data.getString(data.getColumnIndexOrThrow(DATA));
                long size = data.getInt(data.getColumnIndexOrThrow(SIZE));

                if (size < 1)
                    continue;

                PhotoDirectory photoDirectory = new PhotoDirectory();
                photoDirectory.setId(bucketId);
                photoDirectory.setName(name);

                if (!directories.contains(photoDirectory)) {
                    photoDirectory.setCoverPath(path);
                    photoDirectory.addPhoto(imageId, path);
                    photoDirectory.setDateAdded(data.getLong(data.getColumnIndexOrThrow(DATE_ADDED)));
                    directories.add(photoDirectory);
                } else {
                    directories.get(directories.indexOf(photoDirectory)).addPhoto(imageId, path);
                }

                photoDirectoryAll.addPhoto(imageId, path);
            }
            if (photoDirectoryAll.getPhotoPaths().size() > 0) {
                photoDirectoryAll.setCoverPath(photoDirectoryAll.getPhotoPaths().get(0));
            }
            directories.add(INDEX_ALL_PHOTOS, photoDirectoryAll);
            if (resultCallback != null) {
                resultCallback.onResultCallback(directories);
            }
        }

        @Override
        public void onLoaderReset(Loader<Cursor> loader) {

        }
    }

@udofly
Copy link

udofly commented Jun 9, 2020

楼上厉害啊。测试可行。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants