2017-02-22 4 views
0

Новый кодер Android/Java. Пытаясь воспроизвести в приложении Android проект, который я создал в MS-Access.Java - динамически строить textview id

У меня есть макет с аналогичными по имени TextViews, как text10, text12 и т.д. В MS-Access можно динамически создавать эти имена с коллекцией ссылок:

For X = 10 To 15 
    Me.Controls("text" & X) = Null 
Next 

Там нет массива требуется. Какая структура в Java может выполнять те же функции?

+0

Используйте массив или список элементов. Даже если вы можете сделать это так, как вы говорите, это ужасная идея. Не следует следовать стилям программирования доступа в java; есть причина, по которой никто больше не использует VBA – nhouser9

+0

Возможно, когда-нибудь я это выучит, но пока не могу найти ясного объяснения того, как заполнить массив текстовыми элементами, определенными в макете xml. – June7

ответ

2

Вы можете получить идентификатор res из имени res во время выполнения. Так что, если ваш TextView была ID «text1», вы могли бы получить целочисленный идентификатор с помощью:

int id = getResources().getIdentifier("text1", "string", getPackageName()); 
TextView view = findViewById(id); 

Но делать это только в крайнем случае, это чревато ошибками, медленно и в некоторой степени анти шаблон.

EDIT by OP: Независимо от того, что аргумент name всегда возвращает 0, но помечен как ответ, потому что он привел к следующему коду, который работает точно так, как я хочу, против шаблона или нет.
TextView v = (TextView) findViewById(getResources().getIdentifier("tv" + a[i], "id", getPackageName()));

0

Вместо поля TextViewId использовать его Tag поле. String tag = (String)textView.getTag() и textView.setTag(Object tag) с tag instanceof String

, то вы можете найти TextView по Tag

+0

Просто получите ошибку: не удается разрешить символ 'textView' – June7

+0

Вы серьезно? textView - это просто имя переменной, очевидно, вы должны использовать свой собственный – CrowsNet

+0

Да, я понимаю, что и после того, как эта ошибка пыталась объявить и инициировать, но это тоже не сработало. На что бы мне начать? Теперь спор, как ответ Тимо-Ор, решил проблему. Но благодарю вас за эти усилия, большинство ценит. – June7