Adding random and unique images to imageviews android -
i have 16 imageviews on activity......named img1->img16. want diff image on each image view , cannot hardcoded, depening on number passed extra, e.g. 1, 2 , 3..... images added these views must different.
i have code adds 16 images these not unique..... duplicated...
int[] imageviews = { r.id.img1, r.id.img2, r.id.img3, r.id.img4, r.id.img5, r.id.img6, r.id.img7, r.id.img8, r.id.img9, r.id.img10, r.id.img11, r.id.img12, r.id.img13, r.id.img14, r.id.img15, r.id.img16 }; int[] images = { r.drawable.img1, r.drawable.img2, r.drawable.img3, r.drawable.img4, r.drawable.img5, r.drawable.img6, r.drawable.img7, r.drawable.img8, r.drawable.img9, r.drawable.img10, r.drawable.img11, r.drawable.img12, r.drawable.img13, r.drawable.img14, r.drawable.img15, r.drawable.img16 }; random random = new random(system.currenttimemillis()); for(int v : imageviews) { imageview iv = (imageview)findviewbyid(v); iv.setimageresource(images[random.nextint(images.length - 1)]); } and also, if possible, need images not hard coded in images array different depending on number has been passed.
so these images number 1, if number 2 passed activity, images different.
all details saved in local database , images in drawable folder , follow same naming styles e.g. img1 way img100....
many in advance.
/update/
hi, have tried following code:
random random = new random(system.currenttimemillis()); list<integer> generated = new arraylist<integer>(); for(int v : imageviews) { int next = random.nextint(15) + 1; if (!generated.contains(next)) { generated.add(next); imageview iv = (imageview)findviewbyid(v); iv.setimageresource(images[next]); } } i may doing wrong there guess.... far have not found duplicate, not gaps, if maybe generates 16 random ints adds ones unique, rather generating till reaches 16 unique images if understand?
any ideas on front?
whenever next random int, hold value in array. next time random int, check see if number has been picked. if has, repeat process until non-chosen int has been selected.
edit: try code:
random random = new random( system.currenttimemillis() ); list<integer> generated = new arraylist<integer>(); (int = 0; < imageviews.length; i++) { int v = imageviews[i]; int next = random.nextint( 15 ) + 1; if ( !generated.contains( next ) ) { generated.add( next ); imageview iv = (imageview) findviewbyid( v ); iv.setimageresource( images[next] ); } else { i--; } }
Comments
Post a Comment