java - Hide items in GridView if two items have same images using Android -
i developing project using gridview need hide items if user click such 2 items having same images both item should hide.
first time when project load have 1 question marks image on item. when user click item background image show if click item having same picture both item should hide if not, again show question marks image.
how possible?
here mainactivity.java
public class mainactivity extends activity { context ctx; int imagesarray[]; gridviewcontent adapter; list<integer> pictures; 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(); adapter= new gridviewcontent(this); final gridview grid = (gridview) findviewbyid(r.id.gv_memory); grid.setadapter(new gridviewcontent(this)); } private void shufflearray() { // todo auto-generated method stub pictures= new arraylist<integer>(); (int index = 0; index < originalarray.length; index++) { pictures.add(originalarray[index]); } collections.shuffle(pictures); } public class gridviewcontent extends baseadapter { private context context; //abstract change(); 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 convertview, viewgroup arg2) { // todo auto-generated method stub convertview=layoutinflater.from(context).inflate(r.layout.main, null); final imageview myimage=new imageview(context); myimage.setimageresource(picturearray[position]); //myimage.setimageresource(pictures.get(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) { // int post1,post2; myimage.setimageresource(pictures.get(position)); if(flage==false) { img1=pictures.get(position); flage=true; }else if(flage==true){ //post2=position; img2=pictures.get(position); checkresult(); //notifydatasetchanged(); flage=false; } //else if(f) } }); return myimage; } } public void checkresult() { if(img1==img2) { //pictures.remove(post2); adapter.notifydatasetchanged(); 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)); } } }
you try , remember index of gridview item clicked. when second click occurs, check remembered index. if populated (meaning user clicked on arbitrary image once), extract both drawables adapter , check if equal. if are, remove them adapter , update it. not forget reset remembered index.
in code, might this:
int firstclickindex = -1; grid.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview <? > parent, view view, int position, long id) { if (-1 == firstclickindex) { firstclickindex = position; } else { final int fstdrawable = adapter.get(firstclickindex); final int snddrawable = adapter.get(position); if (fstdrawable == snddrawable) { // remove stuff, reset firstclickindex. } else { // reset firstclickindex. } } } });
Comments
Post a Comment