Code Monkey home page Code Monkey logo

tedimagepicker's Introduction

TedImagePicker Android Arsenal

TedImagePicker is simple/beautiful/smart image picker

  • Support Image/Video/Image&Video
  • Support Single/Multi select
  • Support more configuration option
Image Select Select Album Scroller



Demo

Image Select Select Album Scroller



Setup

Gradle

Maven Central

repositories {
  google()
  mavenCentral()
}

dependencies {
    implementation 'io.github.ParkSangGwon:tedimagepicker:x.y.z'
    //implementation 'io.github.ParkSangGwon:tedimagepicker:1.1.10'
}

If you think this library is useful, please press star button at upside.



How to use

1.Enable databinding

  • TedImagePicker use databinding
  • Set enable databinding in your app build.gradle
dataBinding {
    enabled = true
}

or

buildFeatures {
    dataBinding = true
}

2.Start TedImagePicker/TedRxImagePicker

  • TedImagePicker support Listener and RxJavastyle

Listener

Single image
  • Kotlin
TedImagePicker.with(this)
    .start { uri -> showSingleImage(uri) }
  • Java
TedImagePicker.with(this)
        .start(new OnSelectedListener() {
            @Override
            public void onSelected(@NotNull Uri uri) {
                showSingleImage(uri);
            }
        });
TedImagePicker.with(this)
        .start(uri -> {
            showSingleImage(uri);
        });
Multi image
  • Kotlin
TedImagePicker.with(this)
    .startMultiImage { uriList -> showMultiImage(uriList) }
  • Java
TedImagePicker.with(this)
        .startMultiImage(new OnMultiSelectedListener() {
            @Override
            public void onSelected(@NotNull List<? extends Uri> uriList) {
                showMultiImage(uriList);
            }
        });
TedImagePicker.with(this)
        .startMultiImage(uriList -> {
            showMultiImage(uriList);
        });

RxJava

Single image
TedRxImagePicker.with(this)
    .start()
    .subscribe({ uri ->
    }, Throwable::printStackTrace)
Multi image
TedRxImagePicker.with(this)
    .startMultiImage()
    .subscribe({ uriList ->
    }, Throwable::printStackTrace)



Customize

  • You can customize what you want

Function

Common

Function Description
mediaType(MediaType) MediaType.IMAGE / MediaType.VIDEO / MediaType.IMAGE_AND_VIDEO
cameraTileBackground(R.color.xxx) camera Tile Background Color
cameraTileImage(R.drawable.xxx) camera tile image
showCameraTile(Boolean) default true show camera tile
scrollIndicatorDateFormat(String) (default: YYYY.MM) Format of date on scroll indicator
showTitle(Boolean)(default: true) Show title
title(String or R.string.xxx) (default: 'Select Image','사진 선택') title
backButton(R.drawable.xxx) back button
zoomIndicator(Boolean) (default: true) zoom indicator
image() image
video() video
imageAndVideo() image and video
imageCountTextFormat(String) (default: %s): %s장, Count: %s image count text format
savedDirectoryName(String) saved directory name from take picture using camera
startAnimation(Int, Int) start animation
finishAnimation(Int, Int) finish animation
errorListener() error listener for error
cancelListener() cancel listener

Multi Select

Method Description
selectedUri(List<Uri>) selected uri
buttonGravity(ButtonGravity) You can change done button location top or bottom
buttonText(String or R.string.xxx) (default: 'Done','완료') you can change done button text
buttonBackground(R.drawable.xxx) (default: Blue Background) you can change done button background color
buttonTextColor(R.color.xxx) (default: white) done button text color
buttonDrawableOnly(R.drawable.xxx) (default: false) If you want show drawable button without text, use this method
max(Int, String or R.string.xxx) max content should picked from user device
min(Int, String or R.string.xxx) min content should picked from user device
drawerAlbum() / dropDownAlbum() (default: Drawer) You can choice Drawer or DropDown album style



UI

  • Change picker primary color : override color name in your colors.xml
<color name="ted_image_picker_primary">#your_color_code</color>
<color name="ted_image_picker_primary_pressed">#your_color_code</color>
  • Change textAppearance style : override text style in your styles.xml

style list

  • TextAppearance.TedImagePicker.Subhead
  • TextAppearance.TedImagePicker.Body1
  • TextAppearance.TedImagePicker.Caption
<style name="TextAppearance.MyApp.Body1" parent="@style/TextAppearance.AppCompat.Body1">
    <item name="android:textSize">...</item>
    <item name="android:fontFamily">...</item>
</style>
<style name="TextAppearance.TedImagePicker.Body1" parent="@style/TextAppearance.MyApp.Body1" />

FAQ

- Do not need to check permissions?

  • Yes, TedImagePicker automatically check permission. : TedImagePicker use TedPermission
  • But If you need You can check permission before start TedImagePicker.

- java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/databinding/DataBinderMapperImpl;

  • You have to enable databinding
  • Read this

- Duplicate class android.support.v4.xxx: Execution failed for task ':app:checkDebugDuplicateClasses'

  • Add android.enableJetifier=true in your gradle.properties file

- I'm using targetSdkVersion less than 33 and it doesn't work

  • You have to use targetSdkVersion 33
  • If you use targetSdkVersion 32, you can not support SDK 33(Android OS 13) device.
  • these day, there are so many android os 13 device.
  • So you have to use targetSdkVersion 33

- I'm using targetSdkVersion less than 34 and it doesn't work

  • Starting with targetSdkVersion 34, you need to control the permission READ_MEDIA_VISUAL_USER_SELECTED. : Grant partial access to photos and videos
  • If you still keep targetSdkVersion set to 33 to not control the READ_MEDIA_VISUAL_USER_SELECTED permission, you need to add the code below to your Manifest file.
<uses-permission
    android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED"
    tools:node="remove" />



License

Copyright 2019 Ted Park

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.```

tedimagepicker's People

Contributors

bentley-hpcnt avatar cmplxn avatar dimitriadamou avatar hongbeomi avatar parksanggwon avatar ted-prnd avatar vishal-beep136 avatar wooooooak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tedimagepicker's Issues

java.lang.IllegalArgumentException: Unknown pattern character 'Y'

Whenever Picker is opened and I try to scroll down I get this exception. I am using it in Fragment
as

    private fun openGallery() {
        TedImagePicker.with(requireContext()).start(object : OnMultiSelectedListener {
            override fun onSelected(uriList: List<Uri>) {
                images.clear()
                images.addAll(uriList)
                thumbnailsAdapter.notifyDataSetChanged()
            }
        })
    }

Exception:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.myAmazingApp, PID: 30823
    java.lang.IllegalArgumentException: Unknown pattern character 'Y'
        at java.text.SimpleDateFormat.validatePatternCharacter(SimpleDateFormat.java:314)
        at java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:296)
        at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:356)
        at gun0912.tedimagepicker.TedImagePickerActivity$setupMediaRecyclerView$$inlined$run$lambda$1.onScrolled(TedImagePickerActivity.kt:210)
        at androidx.recyclerview.widget.RecyclerView.dispatchOnScrolled(RecyclerView.java:5077)
        at androidx.recyclerview.widget.RecyclerView.scrollByInternal(RecyclerView.java:1975)
        at androidx.recyclerview.widget.RecyclerView.onTouchEvent(RecyclerView.java:3297)
        at android.view.View.dispatchTouchEvent(View.java:8149)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2416)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2140)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2422)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2155)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2422)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2155)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2422)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2155)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2422)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2155)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2422)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2155)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2422)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2155)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2422)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2155)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2422)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2155)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2422)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2155)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2422)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2155)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2295)
        at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1622)
        at android.app.Activity.dispatchTouchEvent(Activity.java:2565)
        at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
        at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2243)
        at android.view.View.dispatchPointerEvent(View.java:8357)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4778)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4644)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4202)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4256)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4225)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4336)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4233)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4393)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4202)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4256)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4225)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4233)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4202)
    	at android.view.ViewRootImpl.delive

Caused by java.lang.IllegalStateException getString(getColumnIndex(dateTaken)) must not be null

Getting this issue and my app is crashing specially in xiaomi and samsung devices. giving full error log.
Caused by java.lang.IllegalStateException: getString(getColumnIndex(dateTaken)) must not be null at gun0912.tedimagepicker.util.GalleryUtil$Companion.access$getAlbum(GalleryUtil.java:55) at gun0912.tedimagepicker.util.GalleryUtil$Companion.access$getAlbum(GalleryUtil.java) at gun0912.tedimagepicker.util.GalleryUtil$Companion$getMedia$1$albumList$1$totalImageList$2.invoke(GalleryUtil.java:7) at gun0912.tedimagepicker.util.GalleryUtil$Companion$getMedia$1$albumList$1$totalImageList$2.invoke(GalleryUtil.java:2) at kotlin.sequences.TransformingSequence$iterator$1.next + 12(TransformingSequence.java:12) at kotlin.sequences.SequencesKt___SequencesKt.map(SequencesKt___SequencesKt.java:20) at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(SequencesKt___SequencesKt.java:10) at kotlin.sequences.SequencesKt___SequencesKt.toList(SequencesKt___SequencesKt.java:5) at kotlin.sequences.SequencesKt.toList(SequencesKt.java) at gun0912.tedimagepicker.util.GalleryUtil$Companion$getMedia$1.subscribe(GalleryUtil.java:123) at io.reactivex.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:10) at io.reactivex.Single.create(Single.java:14) at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run + 2(SingleSubscribeOn.java:2) at io.reactivex.Scheduler$DisposeTask.run + 9(Scheduler.java:9) at io.reactivex.internal.schedulers.ScheduledRunnable.run + 13(ScheduledRunnable.java:13) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java) at java.util.concurrent.FutureTask.run + 266(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run + 301(ScheduledThreadPoolExecutor.java:301) at java.util.concurrent.ThreadPoolExecutor.runWorker + 1167(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run + 641(ThreadPoolExecutor.java:641) at java.lang.Thread.run + 764(Thread.java:764)

Option to clear selected images

i used the tedImagePicker among with a list of images
the user should be able to modify images but what if he clear selected images the done button will be invisible so in this case the user can't clear selection

io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call

io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.IllegalStateException: getString(getColumnIndex(dateTaken)) must not be null
at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
at io.reactivex.internal.observers.ConsumerSingleObserver.onError(ConsumerSingleObserver.java:46)
at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:79)
at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.IllegalStateException: getString(getColumnIndex(dateTaken)) must not be null
at gun0912.tedimagepicker.util.GalleryUtil$Companion.getImage(GalleryUtil.kt:91)
at gun0912.tedimagepicker.util.GalleryUtil$Companion.access$getImage(GalleryUtil.kt:15)
at gun0912.tedimagepicker.util.GalleryUtil$Companion$getMedia$1$albumList$1$totalImageList$2.invoke(GalleryUtil.kt:44)
at gun0912.tedimagepicker.util.GalleryUtil$Companion$getMedia$1$albumList$1$totalImageList$2.invoke(GalleryUtil.kt:15)
at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:172)
at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:702)
at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:732)
at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:723)
at gun0912.tedimagepicker.util.GalleryUtil$Companion$getMedia$1.subscribe(GalleryUtil.kt:45)
at io.reactivex.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:39)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)

Blank images on Android 10

Works fine till Android 9 but on Android 10 it shows blank images. All images are white.Whats the solution?

Feature Request: Allow sorting by file name

Can we add a sort option in the file browser? I would like to sort the images by file name.

Also the file name is not being returned to my application from the plugin. can we have that option as well?

Thanks Chris

Migration to mavenCentral

Completely removing jCenter from the project, leads to the build error of gun0912.ted:tedpermission-rx2 and gun0912.ted:tedonactivityresult-rx2 dependencies not found at mavenCentral.

Although adding jCenter() to repositories fixes the issue, but please migrate these two dependencies to the mavenCentral too, as jCenter is at EOL.

Permission denial when trying to capture photo

You've done a great job but it seems you forgot to check for camera permission.
Also, the camera tile does not show if there are no photos in the photo library even though showCameraTile(true) is set.

Crash at MediaUtil.kt line 76

I'm using the latest TedImagePicker version 1.1.4 in my application.
I saw several crashes in the crashlytics. I'm trying to reproduce this issue but it is not success so far.
Below is the log file from crashlytics.

Fatal Exception: java.lang.IllegalArgumentException Failed to find configured root that contains /storage/emulated/0/Pictures/IMAGE_202012191051076975616910711782408.jpg androidx.core.content.FileProvider$SimplePathStrategy.getUriForFile (FileProvider.java:744) androidx.core.content.FileProvider.getUriForFile (FileProvider.java:418) gun0912.tedimagepicker.util.MediaUtil$Companion.getMediaUri (MediaUtil.kt:76) gun0912.tedimagepicker.util.MediaUtil$Companion.getMediaIntentUri$tedimagepicker_release (MediaUtil.kt:36) gun0912.tedimagepicker.TedImagePickerActivity.onCameraTileClick (TedImagePickerActivity.kt:268) gun0912.tedimagepicker.TedImagePickerActivity.access$onCameraTileClick (TedImagePickerActivity.kt:50) gun0912.tedimagepicker.TedImagePickerActivity$setupMediaRecyclerView$$inlined$apply$lambda$1.onHeaderClick (TedImagePickerActivity.kt:207) gun0912.tedimagepicker.base.BaseRecyclerViewAdapter$onCreateViewHolder$$inlined$apply$lambda$1.onClick (BaseRecyclerViewAdapter.kt:65) android.view.View.performClick (View.java:6603) android.view.View.performClickInternal (View.java:6576) android.view.View.access$3100 (View.java:780) android.view.View$PerformClick.run (View.java:26094) android.os.Handler.handleCallback (Handler.java:873) android.os.Handler.dispatchMessage (Handler.java:99) android.os.Looper.loop (Looper.java:193) android.app.ActivityThread.main (ActivityThread.java:6704) java.lang.reflect.Method.invoke (Method.java) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:916)

이미지 다중 선택시 특정 갯수 선택 이후, 리플 애니메이션 효과 끊김 현상.

이미지 여러장 선택 중. rvSelectedMedia 의 너비 이상 추가 될 때
그 이후 선택하는경우 리플효과 애니메이션이 끊기네요 (렉걸린 듯한 느낌)

재현 경로)
1~7장 선택 시 이상없음
8장 부터 rvSelectedMedia 가 scrollable 될 때 기점으로 렉 발생.
노운 이슈인지? 궁금합니당. ^^;;;

======================================================
안녕하세요. TedImagePicker 잘 사용 중입니다.
좋은 라이브러리 만들어 주셔서 감사합니다.

Need to start image picker with previously selected image

Example scenario

  1. I press the button to pick some images
  2. Press the "Done" button. It will go back to the previous screen.
  3. I press the button to pick images again. >> None of the images is selected.

I want to start image picker with the previously selected image in step 3

Disable select picture from gallery

Hi, I have a requirement where user can only take multiple image from camera. Not gallery. So, the gallery must be disabled. How to achieve such things? I previously used your TedPicker library and I'm able to do that. But since TedPicker has an issue with cwac-camera, I must upgrade to TedImagePicker.

Binding crash

TedRxImagePicker.with(requireContext()) .max(10, R.string.max_10_images) .startMultiImage()
crashes the app.

dataBinding { enabled = true }
is added.

error log:
java.lang.IllegalArgumentException: View is not a binding layout at androidx.databinding.DataBindingUtil.bind(DataBindingUtil.java:180) at androidx.databinding.DataBindingUtil.bind(DataBindingUtil.java:152) at gun0912.tedimagepicker.base.BaseViewHolder.<init>(BaseViewHolder.kt:15) at gun0912.tedimagepicker.adapter.AlbumAdapter$AlbumViewHolder.<init>(AlbumAdapter.kt:31) at gun0912.tedimagepicker.adapter.AlbumAdapter.getViewHolder(AlbumAdapter.kt:18) at gun0912.tedimagepicker.adapter.AlbumAdapter.getViewHolder(AlbumAdapter.kt:13) at gun0912.tedimagepicker.base.BaseRecyclerViewAdapter.onCreateViewHolder(BaseRecyclerViewAdapter.kt:55) at gun0912.tedimagepicker.base.BaseRecyclerViewAdapter.onCreateViewHolder(BaseRecyclerViewAdapter.kt:8) at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114) at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303) at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627) at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587) at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134) at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3540) at android.view.View.measure(View.java:25086) at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1185) at android.view.View.measure(View.java:25086) at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1676) at android.view.View.measure(View.java:25086) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6872) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552) at android.widget.LinearLayout.measureVertical(LinearLayout.java:842) at android.widget.LinearLayout.onMeasure(LinearLayout.java:721) at android.view.View.measure(View.java:25086) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6872) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143) at android.view.View.measure(View.java:25086) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6872) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552) at android.widget.LinearLayout.measureVertical(LinearLayout.java:842) at android.widget.LinearLayout.onMeasure(LinearLayout.java:721) at android.view.View.measure(View.java:25086) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6872) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:25086) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6872) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552) at android.widget.LinearLayout.measureVertical(LinearLayout.java:842) at android.widget.LinearLayout.onMeasure(LinearLayout.java:721) at android.view.View.measure(View.java:25086) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6872) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:742) at android.view.View.measure(View.java:25086) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3083) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1857) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2146) 2020-07-10 17:21:36.786 28220-28220/com.app.airsofter E/AndroidRuntime: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1745) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7768) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:967) at android.view.Choreographer.doCallbacks(Choreographer.java:791) at android.view.Choreographer.doFrame(Choreographer.java:726) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) }

library doesn't display images when working on Android 10

2019-12-24 19:07:09.217 5871-9629/? E/Parcel: Class not found when unmarshalling: gun0912.tedimagepicker.builder.TedImagePicker$Builder
java.lang.ClassNotFoundException: gun0912.tedimagepicker.builder.TedImagePicker$Builder
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at android.os.Parcel.readParcelableCreator(Parcel.java:3031)
at android.os.Parcel.readParcelable(Parcel.java:2981)
at android.os.Parcel.readValue(Parcel.java:2883)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3261)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292)
at android.os.BaseBundle.unparcel(BaseBundle.java:236)
at android.os.BaseBundle.getString(BaseBundle.java:1160)
at android.content.Intent.getStringExtra(Intent.java:8548)
at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:755)
at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:666)
at com.android.server.wm.ActivityStarter.startActivityMayWait(ActivityStarter.java:1749)
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:597)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1604)
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1501)
at com.android.server.wm.ActivityTaskManagerService.startActivity(ActivityTaskManagerService.java:1455)
at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:1658)
at android.os.Binder.execTransactInternal(Binder.java:1021)
at android.os.Binder.execTransact(Binder.java:994)
Caused by: java.lang.ClassNotFoundException: gun0912.tedimagepicker.builder.TedImagePicker$Builder
at java.lang.Class.classForName(Native Method) 
at java.lang.Class.forName(Class.java:454) 
at android.os.Parcel.readParcelableCreator(Parcel.java:3031) 
at android.os.Parcel.readParcelable(Parcel.java:2981) 
at android.os.Parcel.readValue(Parcel.java:2883) 
at android.os.Parcel.readArrayMapInternal(Parcel.java:3261) 
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292) 
at android.os.BaseBundle.unparcel(BaseBundle.java:236) 
at android.os.BaseBundle.getString(BaseBundle.java:1160) 
at android.content.Intent.getStringExtra(Intent.java:8548) 
at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:755) 
at com.android.server.wm.ActivityStarter.startActivity(ActivityStarter.java:666) 
at com.android.server.wm.ActivityStarter.startActivityMayWait(ActivityStarter.java:1749) 
at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:597) 
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1604) 
at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1501) 
at com.android.server.wm.ActivityTaskManagerService.startActivity(ActivityTaskManagerService.java:1455) 
at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:1658) 
at android.os.Binder.execTransactInternal(Binder.java:1021) 
at android.os.Binder.execTransact(Binder.java:994) 

이렇게 나오는건 왜일까요?

07-01 15:06:17.906 422-422/com.buildonenetworks.cutalk0001 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.buildonenetworks.cutalk0001, PID: 422
a.a.c.f: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
at a.a.j.a.onError(RxJavaPlugins.java:367)
at a.a.f.d.k.onSuccess(ConsumerSingleObserver.java:65)
at a.a.f.e.g.d$a.onSuccess(SingleCreate.java:67)
at com.b.b.a.a$a$1$1.onPermissionGranted(TedRx2Permission.java:32)
at com.gun0912.tedpermission.TedPermissionActivity.a(TedPermissionActivity.java:200)
at com.gun0912.tedpermission.TedPermissionActivity.a(TedPermissionActivity.java:177)
at com.gun0912.tedpermission.TedPermissionActivity.onCreate(TedPermissionActivity.java:80)
at android.app.Activity.performCreate(Activity.java:6877)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3208)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3351)
at android.app.ActivityThread.access$1100(ActivityThread.java:222)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7230)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
at android.app.ContextImpl.startActivity(ContextImpl.java:740)
at android.app.ContextImpl.startActivity(ContextImpl.java:727)
at android.content.ContextWrapper.startActivity(ContextWrapper.java:345)
at com.gun0912.tedonactivityresult.ProxyActivity.startActivityForResult(ProxyActivity.java:31)
at com.b.a.a.a$a.startActivityForResult(TedRxOnActivityResult.java:36)
at gun0912.tedimagepicker.builder.TedImagePickerBaseBuilder.c(TedImagePickerBaseBuilder.kt:86)
at gun0912.tedimagepicker.builder.TedImagePickerBaseBuilder.access$startActivity(TedImagePickerBaseBuilder.kt:28)
at gun0912.tedimagepicker.builder.TedImagePickerBaseBuilder$d.accept(TedImagePickerBaseBuilder.kt:72)
at gun0912.tedimagepicker.builder.TedImagePickerBaseBuilder$d.accept(TedImagePickerBaseBuilder.kt:28)
at a.a.f.d.k.onSuccess(ConsumerSingleObserver.java:62)
at a.a.f.e.g.d$a.onSuccess(SingleCreate.java:67) 
at com.b.b.a.a$a$1$1.onPermissionGranted(TedRx2Permission.java:32) 
at com.gun0912.tedpermission.TedPermissionActivity.a(TedPermissionActivity.java:200) 
at com.gun0912.tedpermission.TedPermissionActivity.a(TedPermissionActivity.java:177) 
at com.gun0912.tedpermission.TedPermissionActivity.onCreate(TedPermissionActivity.java:80) 
at android.app.Activity.performCreate(Activity.java:6877) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3208) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3351) 
at android.app.ActivityThread.access$1100(ActivityThread.java:222) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:158) 
at android.app.ActivityThread.main(ActivityThread.java:7230) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

An errors on the item_album.xml

Here is the description of error :

[/storage/emulated/0/.sketchware/libs/local_libs/tedimagepicker_V_1.0.8/res/layout/item_album.xml:59: error: Error: No resource found that matches the given name (at 'layout_constraintBottom_toTopOf' with value '@id/tv_count')., ]

I'm using constraint layout v1.1.3, and using appcompat version 1.0.0, i dont know but the error is comes from item_album.xml

Issue when I made a dark theme [Solved]

Hello,

This dependency is amazing and I'm using this in my project from 5-6 months.I recently made a dark theme which kind of messed with preset colours of back button,title,hamburger icon,the image folder names when hamburger pressed and current folder name.Only the image counter colour (blue) is visible for me. I want to style them to make them visible please let me know,How ?

Edit on 17 June 2020 -

I saw the source and applied the style,that fixed the title's colour,current folder colour,colour of image folders when hamburger is pressed.Now, I only need to know how can I change the drawable for back button and hamburger

Screenshot :

Regards..

Bug:: Ted Image Picker Activity Crashes due to date parsing issue

i am getting following error, currently this error occured on the Android OS Version 19 & 22

java.lang.IllegalArgumentException: Unknown pattern character 'Y' at java.text.SimpleDateFormat.validatePatternCharacter(SimpleDateFormat.java:314) at java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:296) at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:356) at gun0912.tedimagepicker.TedImagePickerActivity$setupMediaRecyclerView$$inlined$run$lambda$1.onScrolled(TedImagePickerActivity.kt:211) at androidx.recyclerview.widget.RecyclerView.dispatchOnScrolled(RecyclerView.java:5173) at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:5338) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:773) at android.view.Choreographer.doCallbacks(Choreographer.java:586) at android.view.Choreographer.doFrame(Choreographer.java:555) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:759) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:160) at android.app.ActivityThread.main(ActivityThread.java:5541) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)

Click on Camera Tile throw Security Exception

First time only ask permissions for storage to show images and when click on camera tile it doesn't ask about camera permissions and crash with security permission exception.

I've inserted all permissions into manifest.
API LEVEL 29

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gun0912.tedonactivityresult.ProxyActivity}: java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.android.camera2/com.android.camera.CaptureActivity clip={text/uri-list U:content://media/external/images/media/42} (has extras) } from ProcessRecord{70f28f2 2912:/u0a169} (pid=2912, uid=10169) with revoked permission android.permission.CAMERA

USAGE

 TedImagePicker.with(CreateAdPost.this).image().showCameraTile(true)
                    .selectedUri(galleryPaths).startMultiImage(new OnMultiSelectedListener() {
                @Override
                public void onSelected(@NotNull List<? extends Uri> list) {
    
                }
            });

ANR while importing image

When select large number of images and press done. Plz show loader while importing.
Error => Input dispatching timed out, waiting to send non key event because the touched window has not finished processing certain input events that were delivered to it over

Adding Max Limit

Hey actually it is not a bug, but if you provide max limit for images selection then it will be nice to have a feature.

다중선택시 숫자배경색 커스텀 가능할까요..?

안녕하세요 TedImagePicker개발자님! 다름이 아니라, 이미지 다중 선택시 이미지 우측 상단에 생기는 숫자 배경색이랑 맨 아래 전체보기 오른쪽 숫자 색을 커스텀 할 수 있도록 함수 추가해주실 수 있으신가요.. 현존하는 이미지픽커중에 가장 예쁘고 좋은 것 같습니다. 좋은 이미지피커 만들어주셔서 진심으로 감사드립니다.

Bug :: Image Selected more than Max limit.

I have selected 6 images then click on done.again when goes to picker with selected Url list then unselect 3 images and add new 3 images now picker just show me 6 images select but in selected url list have 9 images. please resolved this bug ASAP. Thankyou

Android Q - MediaMetadataRetriever.setDataSource Crash

OS - Android 10(Queen cake)

Fatal Exception: java.lang.IllegalArgumentException
at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:184)
at gun0912.tedimagepicker.adapter.MediaAdapter$ImageViewHolder.bind(MediaAdapter.kt:99)
at gun0912.tedimagepicker.adapter.MediaAdapter$ImageViewHolder.bind(MediaAdapter.kt:73)
at gun0912.tedimagepicker.base.BaseRecyclerViewAdapter.onBindViewHolder(BaseRecyclerViewAdapter.kt:81)
at gun0912.tedimagepicker.base.BaseRecyclerViewAdapter.onBindViewHolder(BaseRecyclerViewAdapter.kt:8)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
at androidx.recyclerview.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:561)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
at androidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at androidx.drawerlayout.widget.DrawerLayout.onLayout(DrawerLayout.java:1263)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1762)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:1062)
at android.view.View.layout(View.java:23753)
at android.view.ViewGroup.layout(ViewGroup.java:7277)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3679)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3139)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2200)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9065)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:999)
at android.view.Choreographer.doCallbacks(Choreographer.java:797)
at android.view.Choreographer.doFrame(Choreographer.java:732)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:984)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8016)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)

checkParameterIsNotNull

Fatal Exception: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter uri
at gun0912.tedimagepicker.adapter.MediaAdapter.toggleMediaSelect(:2)
at gun0912.tedimagepicker.TedImagePickerActivity.onMultiMediaClick(TedImagePickerActivity.kt:297)
at gun0912.tedimagepicker.TedImagePickerActivity.setSelectedUriList(TedImagePickerActivity.kt:149)
at gun0912.tedimagepicker.TedImagePickerActivity.access$setSelectedUriList(TedImagePickerActivity.kt:50)
at gun0912.tedimagepicker.TedImagePickerActivity$loadMedia$1.accept(TedImagePickerActivity.kt:141)
at gun0912.tedimagepicker.TedImagePickerActivity$loadMedia$1.accept(TedImagePickerActivity.kt:50)
at io.reactivex.internal.observers.ConsumerSingleObserver.onSuccess(ConsumerSingleObserver.java:62)
at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:81)
at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8512)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

사진 선택 후 크래시가 납니다.

Feature Request: Set Max Count

안녕하세요.
TedImagePickker를 잘 사용하고 있습니다.

추가적으로 selectType이 MULTI일때 MAX_COUNT 설정 가능하도록 추가 부탁 드립니다.

너무 편하게 잘 쓰고 있습니다.

ArrayIndexOutOfBoundsException in BaseRecyclerViewAdapter

Error Log

Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1
at java.util.ArrayList.get(ArrayList.java:439)
at gun0912.tedimagepicker.base.BaseRecyclerViewAdapter.getItem(BaseRecyclerViewAdapter.java:96)
at gun0912.tedimagepicker.adapter.SelectedMediaAdapter$MediaViewHolder$1.onClick(SelectedMediaAdapter.java:33)
at android.view.View.performClick(View.java:7448)
at android.view.View.performClickInternal(View.java:7425)
at android.view.View.access$3600(View.java:810)
at android.view.View$PerformClick.run(View.java:28305)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

I cannot figure out exactly when this happens.
Maybe we can make code defensive like below to prevent crash.

// SelectedMediaAdapter.kt
binding.ivClear.setOnClickListener {
    val item = getItem(adapterPosition.takeIf { it != NO_POSITION }
        ?: return@setOnClickListener)
    onClearClickListener?.invoke(item)
}

and also for getItem(adapterPosition) in MediaAdapter.ImageViewHolder.init

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.