Разница между LayoutInflater.inflate и findViewById

В чем разница между получением ссылки на виджетов следующим образом:

TableRow row = findViewById(R.id.table_row); 

а также:

 TableRow row = (TableRow)LayoutInflater.from(this).inflate(R.layout.table_row, null); 

Есть ли разница, когда TableRow является корнем его компоновки или если его малая часть макета?

В чем разница…

Первый – это получение существующего виджета в вашей деятельности.

Второй – чтение в XML-файле и создание новых виджетов. Второй LayoutInflater.from() также несколько ошибочен, поскольку вы редко используете LayoutInflater.from() (обычно вы используете getLayoutInflater() для своей Activity ), и вы редко хотите использовать этот вариант getLayoutInflater() (если вы не предоставляете Родительский контейнер, ресурсы макета с корневым элементом RelativeLayout будут ошибочным).

Есть ли разница, когда TableRow является корнем его компоновки или если его малая часть макета?

Да. Разница такая же, как и раньше: извлечение существующего виджета или создание нового.

1) Использование

 TableRow row = findViewById(R.id.table_row); 

Вы просто получаете ссылку на представление с id R.id.table_row, которое уже создано и завышено в текущем макете (где current означает Activtiy или View который вы определяете).

2) Использование

 TableRow row = (TableRow)LayoutInflater.from(this).inflate(R.layout.table_row, null); 

Вы раздуваете (что означает создание) новую иерархию представлений на основе определения XML, содержащегося в R.layout.table_row . Поскольку вы не передаете родительский параметр View в методе inflate () , вам нужно будет добавить результирующую иерархию вручную в существующий контейнер.

Intereting Posts
Как указать темный режим действия с моей темой Почему в проекте build.gradle для Android есть обычная «чистая» задача? Иногда JavaScript не работает в веб-браузере android Как сделать полноэкранный макет для пользовательского просмотра клавиатуры в андроиде Получение подписных данных в биллинге на Android-приложении Попытка прочитать свойство «main» из представления только для записи элемента модели «android.sources», заданного для правила android.sources {…} NETWORK_PROVIDER не предоставляет обновленные местоположения Как запустить службу FCM ID только после того, как будет запущено определенное действие? Не удается заставить PreferenceFragment работать (ошибка компиляции) Сбой приложения при вращении без stackTrace Приложение для запуска Android во внутреннем виде Включить OpenCV в пакет приложений для Android Формат AAC на Android Остановить EditText от получения фокуса при запуске Activity Android Studio с использованием существующего Android-sdk