Урок 41. Используем LayoutInflater для создания списка

Обсуждение уроков
Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение klblk » 16 апр 2015, 07:54

p00nk писал(а):Foenix, и тебе спасибо! Я почитал по ссылкам у тебя в подписи, но оно мне практически не помогло в решении моей проблемы. Не смог заметить ошибку. Я же только начал знакомиться с JAVA и разработкой под Android. И даже самые простые ошибки пока не выявляются "на первый взгляд". Хотя кое-что нового для себя я оттуда, конечно, вынес.

Только по наводке klblk, при посимвольном сравнении, строчка за строчкой, я обнаружил
В общем последовательность действий должна быть такова:
0) Учишься читать логи: viewtopic.php?f=60&t=3198
1) По мануалу от Foenix находишь строчку с ошибкой (tvName.setText(name);) и переменную которую её вызывает (tvName - в данной случае для данной строки и данной ошибки других вариантов нет)
2) Далее ищем где эта переменная объявляется (tvName = (TextView)findViewById(R.id.tvName);)
3а) (простоя решение подходящее для данного случая) сверяем данную строчку со строчкой из урока (источника), понимаем где накосячили. Профит.
3б) (сложное, но более универсальное решение, ведь не всегда есть с чем сравнивать, часть кода приходится писать самому, иногда) Нужно понять почему findViewById() возвращает null (думаю для новичка это самое сложное). findViewById() у Activity ищет view, которые мы запихиваем в Activity с помощью метода setContentView(), то есть в данном случае в activity_main.xml (в большинстве случаев так). Но в нашем activity_main.xml нет элемента с id == tvName. Но он есть в item.xml, и следовательно во View item. Далее магическим образом (в общем случае читая документацию или методом тыка) понимаем что у View тоже имеется метод findViewById() для поиска вложенных элементов. Профит.

MAKAVELI
Сообщения: 2
Зарегистрирован: 16 мар 2016, 23:00

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение MAKAVELI » 16 мар 2016, 23:01

onesoft писал(а):Есть вопрос по этому коду:

Код: Выделить всё

item.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT;
Для чего нужно присваивать MATCH_PARENT, если и без этого стоит MATCH_PARENT?
Абсолютно поддерживаю - и без этого прекрасно работает, проверял вот сейчас на девайсе.

Kurtca bain
Сообщения: 1
Зарегистрирован: 05 май 2020, 14:30

Re: Урок 41. Используем LayoutInflater для создания списка

Сообщение Kurtca bain » 05 май 2020, 14:41

Тоже никак не могу понять, объясните, пожалуйста, в чём причина...Весь форум к этому уроку перелопатил, но так и не понял, зачем ширину в этой строчке задавать как MATCH_PARENT, если она и так MATCH_PARENT?

Ответить