2016-01-25 1 views
0

Привет, я новичок в Android, и я пытаюсь изменить фон ImageView на Java. Эта часть работает. Проблема в том, что у меня есть 4 изображения, и я хотел бы случайно выбрать один и отобразить изображение.Android меняет фон динамически случайным образом из массива

Например, у меня есть массив вводимого коэффициента, как, например:

String[] images = new String[4]; 
images[0] = "R.drawable.i1"; 
images[1] = "R.drawable.i2"; 
images[2] = "R.drawable.i3"; 
images[3] = "R.drawable.i4"; 

Я пытался использовать это, чтобы выбрать случайный один:

int idx = new Random().nextInt(images.length); 
String random = (images[idx]); 

Однако я не могу показаться, чтобы получить setBackground для образное изображение для работы с ними.

Для примера я пробовал:

images.setBackgroundDrawable(getResources().getDrawable(R.drawable.images[random])); 

Я знаю, что я не делаю это правильно, однако, что это то, что я хотел бы сделать.

Любые помощь или указатели будут очень признательны. Благодарю.

+1

Это поможет: http://stackoverflow.com/questions/12523005/how-set-background-drawable-programmatically-in-android –

ответ

0

Ваша проблема заключается в том, что вы хотите вызвать метод через строку. Это абсолютно неприемлемо, если вы не работаете с Java-вызовами SQL или XML ... что угодно. вам нужен реальный объект изображения, если вы вызываете метод рисования.

хорошо есть простое решение: D Вместо использования String[]. Используйте ArrayList<Image> , после чего вы можете позвонить по методу list.shuffle().

некоторые псевдо код:

ArrayList<Image> yourImages = new Arraylist<>(); 
yourImages[1] = image1 
yourImages[2] = image2 
... 

yourImages.shuffle(); //shuffles your list 

print(yourImages[1]); 
print(yourImages[2]); 
... 

первый advatage, что ваши фотографии будут отображаться в случайном порядке. Второе преимущество заключается в том, что не существует дубликата каждого отображаемого изображения.

PS: Он также будет работать с Image [] + классом Random. Но почему, выберите строку []. Строка - это представление текста ... не изображение.

0

Вы можете попробовать это:

int[] images = new int[4]; 
    images[0] = R.drawable.i1; 
    images[1] = R.drawable.i2; 
    images[2] = R.drawable.i3; 
    images[3] = R.drawable.i4; 

    int idx = new Random().nextInt(images.length); 
    int random = (images[idx]); 
    images.setBackgroundDrawable(getResources().getDrawable(images[random]));