Фатальное исключение: java.lang.IndexOutOfBoundsException Недопустимый индекс 0, размер равен 0

# #java #android #firebase #android-studio #crashlytics

Вопрос:

Я использую Firebase Crashlytics, и я вижу, что у многих моих пользователей есть эта проблема с сбоем. Я не могу найти никаких решений этой проблемы, и 40% моих пользователей выходят из строя из-за этой ошибки. Как я могу это решить?

Спасибо.

 "Fatal Exception: java.lang.IndexOutOfBoundsException
Invalid index 0, size is 0"

ui.TracksAdapter.getItem (TracksAdapter.java:54)

ui.TracksAdapter.getItemId (TracksAdapter.java:59)
 

Мой код адаптации треков:

 public TracksAdapter(Context context, List<Track> rowItems) {
    this.context = context;
    this.trackItems = rowItems;
}

@Override
public int getCount() {
    return trackItems.size();
}

@Override
public Object getItem(int position) {
    pos = position;
    return trackItems.get(position); // Line 54.
}

@Override
public long getItemId(int position) {
    return trackItems.indexOf(getItem(position)); // Line 59
}
 

Ответ №1:

Вы всегда должны проверять, чтобы аргумент, который вы передаете конструктору вашего адаптера, не был нулевым и не был пустым, но если вы этого не сделаете, вы можете проверить это внутри getItem метода:

 @Override
public Object getItem(int position) {
    pos = position;
    if (trackItems != null amp;amp; trackItems.size() > position) {
        return trackItems.get(position); // Line 54.
    }
    return null;
}
 

Ответ №2:

проверьте getCount() > position , есть ли в trackItems элементы, прежде чем звонить getItemId и getItem