Android Создание массива виджетов в XML и чтение в активности - PullRequest
0 голосов
/ 16 сентября 2011

В моем проекте у меня есть несколько текстовых ящиков, которые я должен заполнять в двух словах.У меня есть значения, которые должны быть заполнены в списке, и я хочу применить setText к текстовым полям во время итерации списка.Возможно ли иметь имя виджета в качестве типа массива, например textbox [1], textbox [2] ....... Здесь в xml оно не выдает никакой ошибки, но в классе действия при чтении выдает ошибку,

findViewById(R.id.textbox[1]    //textbox cannot be resolved or is not a field. 

Есть ли другой способ манипулировать этим?Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

Вы бы попробовали использовать отражение:


for(int i = 0; condition;i++){
    try {
        int id = (Integer) R.id.class.getField("textbox"+i).get(null);
        TextView textView = (TextView) findViewById(id);
        textView.setText("i th text from your list");
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (NoSuchFieldException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

1 голос
/ 16 сентября 2011

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

    ArrayList<TextBox> textbox = new new ArrayList<TextBox>();
    textbox.add((TextBox)findViewById(R.id.textbox1);  
    textbox.add((TextBox)findViewById(R.id.textbox2); 

, а затем использовать его как: textbox [1]

...