Проверить, есть ли View с заданным ID

Есть набор элементов типа ViewGroup и есть код, обрабатывающий эти элементы. Нужно, сделать так, что если внутри элемента есть определённый вложенный элемент, то что-то с ним сделать. Например, если внутри есть TextView с id=title, то установить ему какой-то заголовок.

for (item in items) {
    val nested: TextView? = item.findViewById(R.id.title)
    if (nested !== null) {
        nested.text = "Title"
    }
}

Однако, если ни в одном из этих элементов не будет нужного id, то тогда и константа R.id.title не сгенерируется. Каким другим образом можно посмотреть, есть ли такой id?


Ответы (1 шт):

Автор решения: Barmaley

По сути идентификаторы хранятся в генерируемом класса R.java, который выглядит примерно так:

public final class R {  
    //blah-blah
    public static final class id {  
        public static final int title=0x7f070000;  
        //blah-blah
    }  
}

Надо попробовать наличие поля R.id.title через рефлексию (сорри, что на Java):

Class<?> rIdClass = R.id.class;
Field titleField = rIdClass.getField("title");
if(titleField!=null) {
    //bingo есть контакт
}
→ Ссылка