Xwab
Форумыnavigate_nextДругие языки программирования

Java. Рефлексия (мб). Динамическое создание обьектов
Сообщения
M0rtiis

Стараюсь писать под андроид. Терзает меня одна проблема.
В яве я полный ноль, а тема сложная, гугл не помог, я не могу вкурить, надо "на пальцах".
В кратце, есть код:

TextView tv1 = (TextView) findViewById(R.id.tv1);
TextView tv2 = (TextView) findViewById(R.id.tv2);
TextView tv3 = (TextView) findViewById(R.id.tv3);
//....
TextView tvN = (TextView) findViewById(R.id.tvN);

далее сам проблема, нужно сделать чтото вроде:

for (int i = 1; i <= N; i++)
{
tv{some_keys_array[i]}.setText(some_values_array[i]);
}

-------
tv{some_keys_array[i]} - как????

подскажите кто знает, или альтернативный вариант с созданием tvX на лету, или еще както.

или какойто аналог php eval, любые костыли

================

отакэ проканало вроде:

Map<String, TextView> Map_TextView = new HashMap<String, TextView>();
Map_TextView.put("tv1", (TextView) findViewById(R.id.tv1));
Map_TextView.put("tv2", (TextView) findViewById(R.id.tv2));
Map_TextView.put("tv3", (TextView) findViewById(R.id.tv3));
Map_TextView.put("tv4", (TextView) findViewById(R.id.tv4));
Map_TextView.put("tv5", (TextView) findViewById(R.id.tv5));

String input_string = "tv1.tv.text1/tv2.tv.text3/tv3.tv.text5/tv4.tv.text7/tv5.tv.text9";
String[] input_parsed = input_string.split("\\/");

for(int i = 0; i < input_parsed.length; i++)
{
String[] input_parsed_final = input_parsed[i].split("\\.");

if(input_parsed_final[1].equals("tv"))
{
Map_TextView.get(input_parsed_final[0]).setText(input_parsed_final[2]);
}
}

может элегантнее както можно?

27 Авг 2012, 4:00
Ответить на тему