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
Post a Comment