Android: как изменить рисование в зависимости от выбранного элемента списка - PullRequest
1 голос
/ 11 апреля 2011

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

Мой подход до сих пор состоял в том, чтобы передать позицию выбранного элемента списка:

intent.putExtra("position_on_list", position)

И получите дополнительные бонусы в следующем задании.

Здесь я запутался. Как я могу отобразить картинку динамически в зависимости от выбранного животного? Я пробовал подход if if;

if(position == 0){
   ImageView icon = (ImageView)view.findViewById(R.id.animalImg)
   icon.setImageResource(R.drawable.tiger)
}

Но это приводит к ошибке, когда я запускаю приложение. Может ли кто-нибудь указать мне правильное направление, как я могу поступить правильно?

Спасибо.

1 Ответ

3 голосов
/ 11 апреля 2011

Что касается вашей ошибки, без каких-либо подробностей об ошибке это может быть что угодно ...

Я думаю, что с оператором if все в порядке, вы можете захотеть сделать оператор switch по умолчанию: какальтернатива.

switch (position){
 case 0:
 break;
 default:
 break;
}

Еще один вариант, который мне лично нравится, - это поместить ваши изображения в файл ресурсов arrays.xml и создать TypedArray, это немного чище и более дружественно для Android.XML-файл будет выглядеть примерно так

<?xml version="1.0" encoding="utf-8"?>
 <resources>
        <string-array name="animals">
        <item>@drawable/tiger</item>
        <item>@drawable/bear</item>
        <item>@drawable/...</item>
    </string-array>
</resources>

, и ваша активность будет выглядеть примерно так, без переключателей или ifs

TypedArray ar = getResources().obtainTypedArray(R.array.animals)));
ImageView icon = (ImageView)view.findViewById(R.id.animalImg)
icon.setImageResource(ar.getResourceId(position, -1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...