2017-02-19 8 views
-3

У меня 150 изображений, как я могу установить один из них как ImageButton в зависимости от случайно сгенерированного идентификатора? [Код ОБНОВЛЕНО] Я начал так:Как установить ImageButton в случайном порядке?

int x, y, z,resID; 
String sID; 
Random rand; 
ImageButton SButton; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_play_); 
    rand = new Random(System.currentTimeMillis()); 
    SButton = new ImageButton(this); 
    SButton.setVisibility(View.VISIBLE); 
} 

public void Start(View view) { 
    SButton = (ImageButton) view; 
    x = rand.nextInt(3); 
    y = rand.nextInt(8); 
    z = rand.nextInt(10); 
    sID = "shape_" + x + y + z; 
    resID =getResources().getIdentifier(sID,"drawable","com.packagename"); 
    SButton.setImageResource(resID); 
} 

обновляется с кодом, который работал для меня

+0

У всех изображений есть свои идентификаторы, которые называются: 'R.drawable.image1',' R.drawable.image2' и т. Д. Зачем вам нужны случайные идентификаторы? – JonZarate

+0

как я уже сказал, я новичок в Android, извините ... [Обновлен вопрос] У меня есть мой случайный выбранный идентификатор, как установить кнопку изображения точно так же, как случайно сгенерированный идентификатор? @JonZarate –

+0

Что вы пытаетесь сделать с ImageButton's, у которых есть случайные идентификаторы? – tash

ответ

0

Вы можете сделать это, используя следующий код:

int resource = getResources().getIdentifier(myID, "drawable", "com.your.package"); 

PS: Сядьте из «R.id.» от имени.

+0

Я обновил свой код благодаря @Aftab Hussain –

+0

Это сработало, но оно дает эту ошибку ** getSlotFromBufferLocked: неизвестная ошибка буфера ** @Aftab Hussain –

+0

По-видимому, это открытая проблема для Marshmellow. Посмотрите на ответ «Итай Хански» на http://stackoverflow.com/questions/32561479/android-studio-getslotfrombufferlocked-unknown-buffer-error –

0
  1. Rename yuor image like image1, image2, ..., image150.

  2. Производите случайное число от 1 до 150 (оба включительно).

  3. Используйте нижеприведенный код для получения идентификатора ресурса ресурса. (Используйте «мипмап» вместо «рисует», если вы разместили изображения в папке MIPMAP)

    String myID = "image"+ generatedRandomNumber; 
    int resource = getResources().getIdentifier(myID, "drawable", "com.your.package"); 
    
  4. Используйте этот идентификатор ресурса для установки изображения для ImageButton.