2014-12-09 3 views
-1

У меня есть довольно простой вопрос:андроид findviewbyid() использование ИНТ в поле идентификатора

int i=0; 
n = (TextView) findViewById(R.id. "value of i"); 

Как я могу получить эту работу? Я хочу, чтобы вместо id использовался значение int, возможно ли это? если да, то как мне это заняться?

Я положу код:

private void sxhmatismos7(String[][] pinakas) 
{ 

    TextView n; 
    int i=0; 
    for (i=0;i<12;i++) 
    { 

     n = (TextView) findViewById(R.id."HERE VALUE OF i"); 
     if (n.getText().equals(pinakas[0][0])) 
     { 
      n.setVisibility(View.VISIBLE); 

     } 

    } 


} 
+0

Что вы пытаетесь решить, делая это? –

+0

Предположим, у меня есть 10 текстовых представлений, с идентификаторами 1,2,3,4,5 и т. Д. Я хочу создать цикл: для i = 0; i <10; i ++ и установить видимость, которую я хочу для каждого – user3780144

ответ

0

Что-то, как это должно работать:

int id = resources.getIdentifier(String.valueOf(i), "id", "com.my.package"); 
n = (TextView) findViewById(id); 

Android docs

-1

Вы не использовать его таким образом. R.id.value - это идентификатор ресурса, как правило, из ваших макетов.

R.id.value является public final int из файла R.java. Идентификационный номер генерируется вашим редактором и что-то вроде -11222388. Почти никогда не бывает времени, чтобы не использовать код, который выглядит как (View) findViewById(R.id.itemId);.

+0

Итак, если у меня есть textview с id = 1, я все еще не могу это использовать? Есть ли способ прокрутить все идентификаторы моего макета? – user3780144

+0

Это очень плохая практика. Идентификатор текстового поля может измениться, поскольку он обычно генерируется вашим редактором при его создании (как правило, ваш проект создается при сохранении) и, по-видимому, основан на алфавитном порядке ваших других идентификаторов ресурсов. Например, один из моих ресурсов Id из R.java выглядит так: 'public static int front = 0x7f060002;', что является чрезвычайно большим шестнадцатеричным значением. Кстати, вы не могли использовать это значение в своем проекте. –

+0

Я обновил свой код, есть ли способ, которым я могу это сделать? – user3780144

1

Существует только один путь, вам придется создать TextView динамично и добавить его в макет, есть метод, который называется:

view.setId(int i); 

здесь вы можете установить идентификатор вашего зрения и может получить доступ Это.

+0

Итак, если я создаю его динамически, я могу получить к нему доступ позже? не могли бы вы привести мне пример? i обновил код – user3780144

+0

проверить эту ссылку, парень с большинством upvotes показал, как программно добавить кнопку в линейный макет, вам просто нужно установить идентификатор для просмотра тоже: http://stackoverflow.com/questions/2395769/как к программно-добавить-мнение к просмотрам –

Смежные вопросы