Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.03.2019
Сообщений: 2

Ошибка из-за выхода за пределы массива

02.05.2019, 17:52. Показов 517. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я делаю приложение в Android Studio и столкнулся с проблемой. Я создал listView и адаптер. Мне нужен был живой поиск и я нашел код в интернете.Вот код адаптера:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
public class FilmAdapter extends ArrayAdapter<Film> implements Filterable {
        private LayoutInflater inflater;
        private int layout;
        List<Film> films;
        List<Film> filmsOriginal;
        public FilmAdapter(Context context, int resource, List<Film> films) {
            super(context, resource, films);
            this.films = films;
            this.layout = resource;
            this.inflater = LayoutInflater.from(context);
        }
        @Override
        public Filter getFilter() {
            Filter filter = new Filter() {
 
                @SuppressWarnings("unchecked")
                @Override
                protected void publishResults(CharSequence constraint, FilterResults results) {
 
                    films = (ArrayList<Film>) results.values; // has the filtered values
                    notifyDataSetChanged();  // notifies the data with new filtered values
                }
 
                @Override
                protected FilterResults performFiltering(CharSequence constraint) {
                    FilterResults results = new FilterResults();        // Holds the results of a filtering operation in values
                    ArrayList<Film> FilteredArrList = new ArrayList<Film>();
 
                    if (filmsOriginal == null) {
                        filmsOriginal = new ArrayList<Film>(films); // saves the original data in mOriginalValues
                    }
 
                    /********
                     *
                     *  If constraint(CharSequence that is received) is null returns the mOriginalValues(Original) values
                     *  else does the Filtering and returns FilteredArrList(Filtered)
                     *
                     ********/
                    if (constraint == null || constraint.length() == 0) {
                        // set the Original result to return
                        results.count = filmsOriginal.size();
                        results.values = filmsOriginal;
                    } else {
                        constraint = constraint.toString().toLowerCase();
                        for (int i = 0; i < filmsOriginal.size(); i++) {
                            String data = filmsOriginal.get(i).getName();
                            if (data.toLowerCase().startsWith(constraint.toString())) {
                                FilteredArrList.add(new Film(filmsOriginal.get(i).getName(), filmsOriginal.get(i).getYear(), filmsOriginal.get(i).getInfo(), filmsOriginal.get(i).getRatio(), filmsOriginal.get(i).getPlace(), filmsOriginal.get(i).getUrl()));
                            }
                        }
                        // set the Filtered result to return
                        results.count = FilteredArrList.size();
                        results.values = FilteredArrList;
                    }
                    return results;
                }
            };
            return filter;
        }
 
 
        @NonNull
        public View getView(int position, View convertView, @NonNull ViewGroup parent) {
 
            @SuppressLint("ViewHolder") View view = inflater.inflate(this.layout, parent, false);
 
            TextView nameView = (TextView) view.findViewById(R.id.nameFilm);
            TextView ratioView = view.findViewById(R.id.ratio);
            TextView placeView = view.findViewById(R.id.placeList);
 
            film0 = films.get(position);
            nameView.setText(film0.getName());
            ratioView.setText(film0.getRatio());
            if(Integer.valueOf(film0.getPlace())<=3){
                placeView.setTextColor(Color.parseColor("#006400"));
                placeView.setText(film0.getPlace());}
            else{
                placeView.setTextColor(Color.parseColor("#000000"));
                placeView.setText(film0.getPlace());}
            return view;
 
        }
 
    }
Если коротко, то в нем переопределяется метод getFilter, который как раз и отвечает за изменения listView. Но когда я начинал вводить любую букву или слово, приложение вылетало со следующей ошибкой:
Java
1
2
3
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
        at java.util.ArrayList.get(ArrayList.java:437)
        at com.example.edurado.fragmenttest.MainActivity$FilmAdapter.getView(MainActivity.java:458)
Как я понял в методе getView он выходит за пределы списка films.
Кто разбирается, помогите пожалуйста решить проблему
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2019, 17:52
Ответы с готовыми решениями:

Длинная арифметика (сумма) и ошибка выхода массива за пределы
Всем доброго времени суток, ребят, пишу программу по базовым операциям на длинную арифметику, начал как наверное все начинают с суммы,...

Удаление компонента программно. Ошибка выхода за пределы массива
procedure clearImageBox ; var i:integer; begin for i:=0 to form2.ScrollBox2.ComponentCount-1 do if ...

Ошибка выхода за пределы массива при обращении к нескольким Panel
Здравствуйте. Есть 10 элементов Panel, нужно их выводить в рандомном порядке при нажатии на кнопку button1 (далее) и чтобы они повторно...

1
22 / 22 / 4
Регистрация: 10.04.2011
Сообщений: 248
04.05.2019, 11:50
У вас переопределен в адаптере метод getCount? Он должен возвращать размер вашего списка films
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2019, 11:50
Помогаю со студенческими работами здесь

Класс "Автомобиль" и ошибка выхода за пределы массива
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Список_авто { class...

Проверка выхода за пределы массива
как сделать проверку на выход за пределы массива?

Ошибка выхода за пределы границ вектора
как исправить ошибку?

Вложенная коллекция - ошибка выхода за ее пределы
public class Test { private List&lt;List&lt;T&gt;&gt; doubleList; // вложенный список public Test() { ...

Ошибка выхода за пределы памяти в дебаге, в релизе ОК
Пишу код, &quot;для себя&quot;, так скажем. пытаюсь практиковаться. Балуюсь, другими словами. В релизе то, что я написал, отрабатывает, в дебаге...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru