Как избежать дублирования кода в тестовом приложении Android? - PullRequest
1 голос
/ 29 сентября 2011

Предположим, у меня есть приложение с аналогичными кнопками с именем button0, button1 и т. Д., Вплоть до button9.

Как выполнить следующие действия без дублирования кода?

button0 = (Button) activity.findViewById(com.sample.SampleApp.R.id.button0);
button1 = (Button) activity.findViewById(com.sample.SampleApp.R.id.button1);
...
button9 = (Button) activity.findViewById(com.sample.SampleApp.R.id.button9);

Я пыталсяиспользовать отражение, но код выглядит нечистым.

for (int i = 0; i <= 9; i++) {
    String btnName = "button" + i;
    /* do reflection stuff to link self.buttonX 
       with a reference to com.sample.SampleApp.R.id.buttonX */
}

1 Ответ

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

Следующий код не проверен, но попробуйте:

Button[] buttons = new Button[]{button0, button1, button2, button3, button4, button5, button6, button7, button8, button9};
for (int i = 0; i < buttons.length, i++) {
   buttons[i] = (Button) findViewById(getResources().getIdentifier("button" + i, "id", "com.sample.SampleApp"));
}

С ArrayList (снова не проверено - просто чтобы дать вам представление о том, что я имею в виду):

ArrayList<Button> buttons = new ArrayList<Button>();
for (int i = 0; i < 10, i++) {
   buttons.add(new Button(this));
   buttons.get(i) = (Button) findViewById(getResources().getIdentifier("button" + i, "id", "com.sample.SampleApp"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...