gridview - Shuffle Array images in android -


i developing android application need shuffle images stored in array using random function before assigning adapter. have following code on how shuffle array images, encounters error

mainactivity.java:

public class mainactivity extends activity {     context ctx;     boolean flage=false;     int img1=-1,img2=-1;     public int originalarray[] = { r.drawable.sample_0, r.drawable.sample_1,             r.drawable.sample_2, r.drawable.sample_3,r.drawable.sample_0, r.drawable.sample_1,             r.drawable.sample_2, r.drawable.sample_3 };      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.main);         shufflearray();         final gridview grid = (gridview) findviewbyid(r.id.gv_memory);         grid.setadapter(new gridviewcontent(this));     }     private void shufflearray() {         // todo auto-generated method stub         random arrayrandom= new random();         for(int i=0; i<originalarray.length-1; i++){             int index=arrayrandom.nextint(i);             originalarray[i]=originalarray[index];          }      }     public class gridviewcontent extends baseadapter {         private context context;          public int picturearray[]={                 r.drawable.question,                 r.drawable.question,                 r.drawable.question,                 r.drawable.question,                 r.drawable.question,                 r.drawable.question,                 r.drawable.question,                 r.drawable.question,                 };         public gridviewcontent(context c){             context=c;          }          @override         public int getcount() {             // todo auto-generated method stub             return (picturearray.length);         }          @override         public object getitem(int position) {             // todo auto-generated method stub             return picturearray[position];         }          @override         public long getitemid(int position) {             // todo auto-generated method stub             return 0;         }          @override         public view getview(final int position, view arg1, viewgroup arg2) {             // todo auto-generated method stub             final imageview myimage=new imageview(context);             myimage.setimageresource(picturearray[position]);             myimage.setscaletype(imageview.scaletype.center_inside);             myimage.setlayoutparams(new gridview.layoutparams(70, 70));             myimage.setonclicklistener(new onclicklistener() {                  @override                 public void onclick(view v) {                     // todo auto-generated method stub                     //toast.maketext(context, string.valueof(position), toast.length_short).show();                 myimage.setimageresource(originalarray[position]);                  if(flage==false)                 {                  img1=originalarray[position];                  flage=true;                  }else if(flage==true){                  img2=originalarray[position];                 checkresult();                 flage=false;                 }                 //else if(f)                 }             });              return myimage;         }      }     public void checkresult() {         if(img1==img2)         {             toast.maketext(mainactivity.this, "congratualatin !!!!", toast.length_long).show();         }         else{             toast.maketext(mainactivity.this, "sorry!!!!", toast.length_long).show();             final gridview grid = (gridview) findviewbyid(r.id.gv_memory);             grid.setadapter(new gridviewcontent(this));         }      } }      

logcat......

03-12 05:40:31.904: d/dalvikvm(1081): gc_for_alloc freed 58k, 8% free 2771k/3000k, paused 198ms, total 201ms 03-12 05:40:31.914: i/dalvikvm-heap(1081): grow heap (frag case) 3.943mb 1127536-byte allocation 03-12 05:40:31.965: d/dalvikvm(1081): gc_for_alloc freed 2k, 6% free 3870k/4104k, paused 47ms, total 47ms 03-12 05:40:32.014: d/androidruntime(1081): shutting down vm 03-12 05:40:32.014: w/dalvikvm(1081): threadid=1: thread exiting uncaught exception (group=0x41465700) 03-12 05:40:32.024: e/androidruntime(1081): fatal exception: main 03-12 05:40:32.024: e/androidruntime(1081): java.lang.runtimeexception: unable start activity componentinfo{com.example.memoryforkids/com.example.memoryforkids.mainactivity}: java.lang.illegalargumentexception: n <= 0: 0 03-12 05:40:32.024: e/androidruntime(1081):     @ android.app.activitythread.performlaunchactivity(activitythread.java:2211) 03-12 05:40:32.024: e/androidruntime(1081):     @ android.app.activitythread.handlelaunchactivity(activitythread.java:2261) 03-12 05:40:32.024: e/androidruntime(1081):     @ android.app.activitythread.access$600(activitythread.java:141) 03-12 05:40:32.024: e/androidruntime(1081):     @ android.app.activitythread$h.handlemessage(activitythread.java:1256) 03-12 05:40:32.024: e/androidruntime(1081):     @ android.os.handler.dispatchmessage(handler.java:99) 03-12 05:40:32.024: e/androidruntime(1081):     @ android.os.looper.loop(looper.java:137) 03-12 05:40:32.024: e/androidruntime(1081):     @ android.app.activitythread.main(activitythread.java:5103) 03-12 05:40:32.024: e/androidruntime(1081):     @ java.lang.reflect.method.invokenative(native method) 03-12 05:40:32.024: e/androidruntime(1081):     @ java.lang.reflect.method.invoke(method.java:525) 03-12 05:40:32.024: e/androidruntime(1081):     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:737) 03-12 05:40:32.024: e/androidruntime(1081):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553) 03-12 05:40:32.024: e/androidruntime(1081):     @ dalvik.system.nativestart.main(native method) 03-12 05:40:32.024: e/androidruntime(1081): caused by: java.lang.illegalargumentexception: n <= 0: 0 03-12 05:40:32.024: e/androidruntime(1081):     @ java.util.random.nextint(random.java:175) 03-12 05:40:32.024: e/androidruntime(1081):     @ com.example.memoryforkids.mainactivity.shuffarray(mainactivity.java:47) 03-12 05:40:32.024: e/androidruntime(1081):     @ com.example.memoryforkids.mainactivity.oncreate(mainactivity.java:38) 03-12 05:40:32.024: e/androidruntime(1081):     @ android.app.activity.performcreate(activity.java:5133) 03-12 05:40:32.024: e/androidruntime(1081):     @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1087) 03-12 05:40:32.024: e/androidruntime(1081):     @ android.app.activitythread.performlaunchactivity(activitythread.java:2175) 03-12 05:40:32.024: e/androidruntime(1081):     ... 11 more      

first need convert array arraylist , can apply collection.shuffle() on it.

here below lines convert int array of pictures arraylist of integer.

list<integer> pictures = new arraylist<integer>(); (int index = 0; index < originalarray.length; index++) {     pictures.add(originalarray[index]); } 

then use collection.shuffle() on it.

collections.shuffle(pictures); 

and in getview method can use following way.

myimage.setimageresource(pictures.get(position)); 

Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -