Как ссылаться на массив EditText, созданный в main.xml - PullRequest
1 голос
/ 20 октября 2011

Мое приложение становится немного раздутым, я хотел бы «сжать» некоторый код, изменив некоторые из моих переменных в массивы и используя некоторые циклы for для обработки моих переменных. Моя первая цель - инициализация моих окон EditText

Мой оригинальный код (работает нормально) в комплекте:

EditText miBox1, spBox1 ;   
EditText miBox2, spBox2 ;   

...

miBox1 = (EditText)this.findViewById(R.id.miBox1);
spBox1 = (EditText)this.findViewById(R.id.spBox1);
miBox2 = (EditText)this.findViewById(R.id.miBox2);
spBox2 = (EditText)this.findViewById(R.id.spBox2);

У меня на самом деле есть двадцать ящиков и 20 ящиков для настройки Я пытаюсь создать массив и перебрать их

В моем main.xml я переименовал мои поля EditText в miBox [1] spBox [1] и т. д.

Я заявляю в своей деятельности с:

EditText[] miBox = new EditText[20] ;    
EditText[] spBox = new EditText[20] ;  

и поместить это в цикл for

miBox[i] = (EditText)this.findViewById(R.id.miBox[i]);
spBox[i] = (EditText)this.findViewById(R.id.spBox[i]);

но Eclipse не может разрешить R.id.miBox [i]

Как правильно создать массив EditText в моем XML, чтобы это признано?

Спасибо JD

Ответы [ 2 ]

4 голосов
/ 20 октября 2011
int resID = getResources().getIdentifier("miBox" + i,
    "id", getPackageName());

где я ваш индекс

EditText editText = (EditText)findViewById(resId);

если вы хотите поместить его в массив, просто сделайте это:

 miBox[i] = (EditText)findViewById(resId);
3 голосов
/ 20 октября 2011

проблема в том, что вы неправильно изменили несколько вещей.

код должен выглядеть следующим образом:

EditText[] miBox = new EditText[20] ;    
EditText[] spBox = new EditText[20] ;  

и помещать его в цикл for

miBox[i] = (EditText)this.findViewById(R.id.miBox1);
spBox[i] = (EditText)this.findViewById(R.id.spBox1);

Здесь msitake использует miBox[i], поскольку это неидентификатор, который вы использовали в макете xml.

надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...