java - Android. Displaying Large String ArrayList in GridView -
i have problem when displaying large arraylist in gridview.
the arraylist populated range of single characters, range entered user.
the gridview displays each value in arraylist and, when item pressed, string inserted edittext.
all above works. problem arises when press in edittext.
when arraylist contains large number of entries ( > 1000), there noticeable pause when edittext pressed , gridview loses focus. pause increases depending of number of arraylist entries.
the arraylist created follows:
arraylist<string> list = new arraylist<string>(); (int = startvalue; <= endvalue; i++) { list.add(new string(character.tochars(i))); } gridview.setadapter(new charadapter(mactivity, list));
the adapter follows:
public class charadapter extends arrayadapter<string> { public charadapter(context context, arraylist<string> list) { super(context, 0, list); } @override public view getview(int position, view convertview, viewgroup parent) { viewholderitem viewholder; if (convertview == null) { convertview = layoutinflater.from(mactivity).inflate(r.layout.chars_gridview_item, parent, false); viewholder = new viewholderitem(); viewholder.chartextview = (textview) convertview.findviewbyid(r.id.image); convertview.settag(viewholder); } else { viewholder = (viewholderitem) convertview.gettag(); } string chr = getitem(position); viewholder.chartextview.settext(chr); return convertview; } } static class viewholderitem { textview chartextview; }
any ideas happening , how stop it?
it's heavy operation happens on main thread. while running, locks main thread, hence visual issues.
you need move code:
arraylist<string> list = new arraylist<string>(); (int = startvalue; <= endvalue; i++) { list.add(new string(character.tochars(i))); }
into separate runnable.
if not much, set asynctask instance , set adapter in asynctask.onpostexecute()
Comments
Post a Comment