android - How to access all child elements of a GridView? -
i have gridview
showing items of "icon text overlay". on specific event want iterate of items , change text. how can reference items outside of onitemclicklistener
?
can somehow execute like: view.findallviewbyid(r.id.itemtext);
? know findall() not exist.
item_view.xml:
<relativelayout> <imageview /> <textview android:id="@+id/itemtext" /> </relativelayout>
main.xml:
<linearlayout> <gridview android:id="@+id/simplegridview" /> </linearlayout>
code.
gridview grid = (gridview) findviewbyid(r.id.simplegridview); grid.setadapter(..); //inside adapter: inflates items r.layout.item_view grid.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { textview item = ((textview) view.findviewbyid(r.id.itemtext)); item.settext("some click text"); } });
question: how can access available r.id.itemtext
elements, , iterate through them? because have no reference them.
1. child views
if want access r.id.itemtext
views use gridview
viewgroup
(it extends it), iterate on children , findviewbyid(r.id.itemtext)
each of them:
for (int = 0; < grid.getchildcount(); i++) { view child = getchildat(i); view itemtext = child.findviewbyid(r.id.itemtext); ... }
2. adapter items
but gridview adapterview , has handy methods getfirstvisibleposition
, getlastvisibleposition
, getitematposition
, consider using them data in (currently visible) text views this:
int first = grid.getfirstvisibleposition(); int last = grid.getlastvisibleposition(); for(int i=first; i<=last; ++i){ object item = grid.getitematposition(); // should cast adapter's item type }
Comments
Post a Comment