Перечислить / перебрать все представления в действии?

Они включают его устаревшую систему управления модуля (заголовочные файлы)

, я не могу действительно видеть проблемы со способом, которым C++ использует заголовочные файлы. Путем предоставления двух способов включать заголовки, можно определить на исходном уровне, должны ли символы прибыть из приложения, или из системы установил facuilities. Предварительно скомпилированные заголовки поддержки компиляторов всего современного C++, таким образом, нет никакой потери производительности. Разделение заголовков от реализаций позволяет разработчикам пользоваться библиотеками, запрограммированными на других языках.

причуды синтаксиса, которые делают его грамматику неразрешимой (такую как <> угловые скобки для объявления шаблона), фактически никакой синтаксический сахар,

язык является очень большим и может быть трудным полностью следовать, но это все еще ведется многими логическими правилами, которые применяются везде. Язык на самом деле обеспечивает много способов настроить Ваше использование посредством перегрузок функции и оператора и с шаблонами, которые позволяют дать краткое выражение Вашей проблемы

включение макросов, которые работают на текстовом уровне вместо реальных функций языка для обращения к вещам, для которых используются макросы,

существует много для не симпатии приблизительно препроцессора, но может быть очень полезно воздействовать на маркеры с точки зрения генерации кода. Предоставленный, вещи как макросы M4 обеспечивают намного более мощный способ сделать это, но оборотная сторона - то, что это не стандартный компонент языка. Стандарт c/c ++ препроцессор доступен ВЕЗДЕ, компилятор.

дублирование функциональности как массивы и строки (STL и версии C этих типов)

Эта функциональность не является дублированием. Низкий уровень, байт примитивами байта (uncluding арифметика указателя) необходим для реализации понятий высшего порядка как универсальные контейнеры. Помните, что C++ для программирования систем, это реализовано на, но также и для обеспечения выразительного питания сделать реальную работу.

и общее отсутствие современных функций, таких как поточная обработка, сборка "мусора", делегаты/закрытия, и т.д. (Примечание: Да, в очень памяти ограниченные или среды реального времени у Вас могли бы быть серьезные основания для того, чтобы не желать сборку "мусора", но это могло легко быть сделано уклонением и быть способом по умолчанию управлять памятью.)

Поточная обработка - что-то, что требует сотрудничества от операционной системы способом, которую не может действительно стандартизировать язык программирования. Много языков абстрагируют это в единственный интерфейс, но этого не произошло в C++ (это прибывает, по-видимому). Сборщики "мусора" доступны для C++, но он обеспечивает более мощное понятие, RAII. Отказывание не является C++ путь во всяком случае, если собирающее "мусор" средство когда-либо стандартизируется на язык, это несомненно будет подписыванием, так, чтобы Вы не платили за него, если Вы не используете его.

16
задан StevenWhite 23 March 2017 в 18:43
поделиться

1 ответ

Небольшая рекурсивная функция, которая делает перечисление всех представлений

 private fun processAllViews(viewGroup: ViewGroup) {
    for (child in viewGroup.children) {
        if (child is EditText) {
           // do some stuff with EditText
        } else if (child !is ViewGroup) {
            // do some stuff with not EditText and not ViewGroup
        } else {
            processAllViews(child as ViewGroup) // process inner layout
        }
    }
}

Записанный в Kotlin.

Для использования этой функции:

processAllViews( [~rootLayoutId~] )

или если Вы не имеете / не хотят корневой идентификатор

val baseContent = (findViewById<View>(android.R.id.content) as ViewGroup).getChildAt(0) as ViewGroup
processAllViews(baseContent)
расположения
0
ответ дан 30 November 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: