Android - Gridview, custom layout onclicklistener -


i have gridview 2 textviews inside it, when gridview populated, onclicklistener set returns position of item selected. want trigger method when 1 of textviews selected.

is possible? if yes, how set up?

edit 3:

inside activity whch populated gridview: retrieve string-array strings.xml, for loop examines each item inside array , searches condition based on item's name inside sharedpreferences, for loop solely counting how many "true" conditions there are, retrieves int saved inside count. new string[] created, required exact length given before items can added it, check count if it's more 0, give string[] length of count , for loop add each true string[] list created. if count 0 (no true conditions found in first for loop) 1 item added string[] , given value "no favourites added".

then have gridview's onitemclicklistener().

        string s[] = getresources().getstringarray(r.array.fulllist);         int count = 0;         for(int = 0; < s.length; i++) {             sharedpreferences sp = getactivity().getsharedpreferences("fav", mode_private);             boolean b = sp.getboolean(s[i], false);             if (b == true) {                 count++;             }         }         string[] newlist;         if (count > 0) {             newlist = new string[count];             count = 0;             for(int = 0; < s.length; i++) {                 sharedpreferences sp = getactivity().getsharedpreferences("fav", mode_private);                 boolean b = sp.getboolean(s[i], false);                 if (b == true) {                     newlist[count] = s[i];                     count++;                 }             }         } else {             newlist = new string[1];             newlist[0] = "no favourites added";         }          gridview favgv = (gridview) getactivity().findviewbyid(r.id.sexp_fav);         favgv.setadapter(new tab01_favadapter(getactivity(), newlist));         favgv.setonitemclicklistener(new adapterview.onitemclicklistener() {              @override             public void onitemclick(adapterview arg0,                      view arg1, int position, long arg3) {                  //intent = new intent(getactivity(), pospreview_gestures.class);                 //i.putextra("position", position);                 //startactivity(i);             }         }); 

so that's code inside activity populates gridview. adapter in it's original, functioning form: populates gridview favourite items (their names string[]) , adds textview "remove" when pressed, shows toast: "remove".

public class tab01_favadapter extends baseadapter {      private context mcontext;     private layoutinflater minflator;      string mentries[];          public tab01_favadapter (context c, string[] entries) {         mcontext = c;         minflator = (layoutinflater) mcontext.getsystemservice(context.layout_inflater_service);         mentries = entries;      }      @override     public int getcount() {         return mentries.length;     }      @override     public object getitem(int position) {         return position;     }      @override     public long getitemid(int position) {         return position;     }      @override     public view getview(int position, view convertview, viewgroup parent) {          if(convertview == null) {             convertview = minflator.inflate(r.layout.favitemlayout, parent, false);         }          textview tx = (textview) convertview.findviewbyid(r.id.favgridremoveitem);         onclicklistener ocl = new onclicklistener() {             @override             public void onclick(view v) {                 toast.maketext(mcontext,"remove",toast.length_short).show();             }         };         tx.setonclicklistener(ocl);          return convertview;     } } 

i assuming using custom adapter populating gridview, , passing context argument constructor.

in custom adapter, should add onclicklisteners textviews. using context, can call methods activity:

((callingactivityname)context).methodyouwishtocall(parameters); 

this go inside onclicklisteners.

edit: added code:

public class mygridadapter extends baseadapter {      private final list<myobjectclass> mentries;     private final layoutinflater minflater;     private final context mcontext;       public static class viewholder {         public textview tx;     }      public mygridadapter(callingactivityname context, list<myobjectclass> entries) {         super();         mentries = entries;         mcontext = context;         minflater = (layoutinflater) mcontext             .getsystemservice(context.layout_inflater_service);     }      @override     public int getcount() {         return mentries.size();     }      @override     public object getitem(int position) {         return mentries.get(position);     }      @override     public view getview(final int position, view convertview, viewgroup parent) {          final viewholder holder;          if (convertview == null) {              convertview = minflator.inflate(r.layout.favitemlayout, parent, false);             holder = new viewholder();              holder.tx = (textview) convertview                 .findviewbyid(r.id.favgridremoveitem);              convertview.settag(holder);         } else {             holder = (viewholder) convertview.gettag();         }          final myobjectclass info = mentries.get(position);          holder.tx.setonclicklistener(new onclicklistener() {                      @override                     public void onclick(view v) {                         ((callingactivityname)mcontext).favremove(info);                         notifydatasetchanged();                     }         });          return convertview;     }  } 

so, callingactivityname name of activity initiate adapter , method need call resides. info object held @ position position of gridview. myobjectclass class name of objects in list mentries.


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -