Я получаю ArrayIndexOutOfBoundsException
, указывая на мой onError
метод Пикассо:
Picasso.get().load(category.get(holder.getAdapterPosition()).getImage()).noFade().tag("tag").resize(100, 100).centerCrop().networkPolicy(NetworkPolicy.OFFLINE).placeholder(R.drawable.image_placeholder).into(holder.img, new Callback() {
@Override
public void onSuccess() {}
@Override
public void onError(Exception e) {
//Error points to this line
Picasso.get().load(category.get(holder.getAdapterPosition()).getImage()).noFade().resize(100, 100).centerCrop().memoryPolicy(MemoryPolicy.NO_CACHE).placeholder(R.drawable.image_placeholder).into(holder.img);
}
});
Мне не удалось воспроизвести эту проблему на моем устройстве, поэтому я не уверен, почему это такпроисходит?
Пока что это происходит только на устройствах под управлением Android 8.0.0.
У меня есть разрешения на доступ в Интернет.
Вот мой журнал аварийных сбоев:
Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=73; index=-1
at java.util.ArrayList.get(ArrayList.java:439)
at com.app.name.Recycler.RecyclerVideoAdapter$2.onError(RecyclerVideoAdapter.java:413)
at com.squareup.picasso.ImageViewAction.error(ImageViewAction.java:72)
at com.squareup.picasso.Picasso.deliverAction(Picasso.java:581)
at com.squareup.picasso.Picasso.complete(Picasso.java:535)
at com.squareup.picasso.Picasso$1.handleMessage(Picasso.java:122)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Любая помощь будет признательна.
Изменить 1:
Чтобы уточнить, я изменил следующее с:
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {
Picasso.get().load(category.get(holder.getAdapterPosition()).getImage()).noFade().tag("tag").resize(100, 100).centerCrop().networkPolicy(NetworkPolicy.OFFLINE).placeholder(R.drawable.image_placeholder).into(holder.img, new Callback() {
@Override
public void onSuccess() {}
@Override
public void onError(Exception e) {
//Error points to this line
Picasso.get().load(category.get(holder.getAdapterPosition()).getImage()).noFade().resize(100, 100).centerCrop().memoryPolicy(MemoryPolicy.NO_CACHE).placeholder(R.drawable.image_placeholder).into(holder.img);
}
});
на следующее:
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {
final int adapterPosition = holder.getAdapterPosition();
Picasso.get().load(category.get(adapterPosition).getImage()).noFade().tag("tag").resize(100, 100).centerCrop().networkPolicy(NetworkPolicy.OFFLINE).placeholder(R.drawable.image_placeholder).into(holder.img, new Callback() {
@Override
public void onSuccess() {}
@Override
public void onError(Exception e) {
//Error points to this line
Picasso.get().load(category.get(adapterPosition).getImage()).noFade().resize(100, 100).centerCrop().memoryPolicy(MemoryPolicy.NO_CACHE).placeholder(R.drawable.image_placeholder).into(holder.img);
}
});