Как упростить установку значений для представлений в виджете Android - PullRequest
1 голос
/ 01 марта 2012

Я хотел бы спросить, возможно ли это и как упростить следующий код:

views.setImageViewBitmap(R.id.contact01Button, data.get(0).getFriendImage());
views.setImageViewBitmap(R.id.contact02Button, data.get(1).getFriendImage());
views.setImageViewBitmap(R.id.contact03Button, data.get(2).getFriendImage());
views.setImageViewBitmap(R.id.contact04Button, data.get(3).getFriendImage());

Как создать идентификатор представления, например, R.id.contactXXButton в цикле или с чем-то подобным?Мне нужно установить много кнопок.

Ответы [ 4 ]

0 голосов
/ 01 марта 2012

Вы можете достичь желаемого с помощью getIdentifier () .

0 голосов
/ 01 марта 2012

Да, вы можете сделать это.Вот простая демонстрация для реализации findViewById () в цикле.

for(int a=0; a<arr.length; a++) {
    String buttonID = "contact" + a + "Button";
    int resID = getResources().getIdentifier(buttonID, "id", "com.package.your_app");   

    // To fetch Package name, you can directly call getPackageName() instead of static string "com.package.your_app

    buttons[a] = ((Button) findViewById(resID));
}
0 голосов
/ 01 марта 2012

Это должно сработать:

for (int i = 0; i < ids.length; i++) {
  String identifier = "contact" + String.format("%02s", i+1) + "Button";

  // next line taken from louiscoquio's answers. Credits go to him!
  int id = getResources().getIdentifier(identifier, "drawable", theContext.getPackageName());

  views.setImageViewBitmap(id, data.get(i).getFriendImage());
}
0 голосов
/ 01 марта 2012
for (int i = 0; i < 4; i++) {
  int drawableResourceId = getResources().getIdentifier("contact0" + i + "Button", "drawable", getPackageName());
  views.setImageViewBitmap(drawableResourceId, data.get(i).getFriendImage());
}

Это псевдокод, но это должно быть что-то вроде этого.

См. Resources.getIdentifier () документацию для получения дополнительной информации

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