Android ListView mListView.getChildAt (i) null, как его решить?

Я создаю код ниже:

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { for (int i = 0; i < mListView.getCount(); i++) { View callLogView = mListView.getChildAt(i); mRelativeLayout = (LinearLayout)callLogView.findViewById(R.id.myShow); if(i == position){ if(mRelativeLayout.getVisibility() == View.GONE){ mRelativeLayout.setVisibility(View.VISIBLE); } else{ mRelativeLayout.setVisibility(View.GONE); } }else{ mRelativeLayout.setVisibility(View.GONE); } } } }); 

Я хочу реализовать функцию, например, когда я нажимаю один элемент Listview , он отображает представление, а остальные элементы Listview будут скрыты. Но mListView.getChildAt(i) будет иметь нулевой указатель после превышения mListView.getChildCount() .

Как это решить? Заранее спасибо!

AdapterView.getCount () возвращает количество элементов данных, которое может быть больше, чем количество видимых видов, поэтому вы получаете исключение нулевого указателя, потому что вы пытаетесь найти представления, которые не существуют в текущих видимых элементах ListView.

Чтобы решить эту проблему, сначала нужно найти первый видимый элемент в ListView, используя getFirstVisiblePosition() и последний видимый элемент, используя getLastVisiblePosition() . Измените условие цикла:

 int num_of_visible_view=mListView.getLastVisiblePosition() - mListView.getFirstVisiblePosition(); for (int i = 0; i < num_of_visible_view; i++) { // do your code here } 

Вы не можете реализовать это в onItemClick.

Поскольку вы можете получить доступ только к видимому ребенку, не все дочерние.

Что вы можете сделать, это onItemClick

Вы можете отправить позицию в адаптер

А затем установить логику там в getView тоже изменить вид

И обновить адаптер в списке, или уведомить об изменениях.

Intereting Posts
Android – предложение подстановочного шаблона AutoCompleteTextView Как заставить мой ViewPager загружать только одну страницу за раз, т.е. setOffscreenPageLimit (0); Libgdx SpriteBatch визуализирует текстуру Клавиши курсора не работают при использовании sqlite3 из оболочки adb Почему мы не можем использовать прозрачные системные панели с ActionBar Добавление идентификатора поставщика в Linux для отладки устройства: ошибка: никаких разрешений Дизайн-подход: андроид и веб-сервис Удаленное изображение по-прежнему отображается в галерее Android до тех пор, пока я не перезапущу эмулятор Ошибка: Выполнение выполнено для задачи 'ndkBuild'. > Процесс 'команда' Android \ sdk \ ndk-bundle / ndk-build.cmd '' завершена с ненулевым значением выхода 2 DataBinding не работает после обновления Android Studio 2.3 Используйте команду adb screenrecord для отображения экрана Android на ПК через USB Firebase Crash Reporting – исключение java.lang.NullPointerException FindViewById (int) возвращает значение null для пользовательских представлений, но не встроенные в Android Android OpenAL? Android загружает видео на удаленный сервер, используя данные мультиплексора HTTP