Sunday, 15 January 2012

Large set of data in listview crashing the android app -



Large set of data in listview crashing the android app -

hi need manage big set of info in listview in android app. list items may around 250 or more that. problem when scroll listview crashes app due more items. listview working fine when items less 100.

please help me solve this.

this error log.

02-13 06:43:07.320: error/androidruntime(1776): caused by: java.lang.outofmemoryerror android.graphics.bitmapfactory.nativedecodeasset(native method) android.graphics.bitmapfactory.decodestream(bitmapfactory.java:577) android.graphics.bitmapfactory.decoderesourcestream(bitmapfactory.java:445) android.graphics.drawable.drawable.createfromresourcestream(drawable.java:738) android.content.res.resources.loaddrawable(resources.java:1869) android.content.res.resources.getdrawable(resources.java:659) android.widget.scrollview.setoverscrollmode(scrollview.java:1487) android.view.viewgroup.(viewgroup.java:365) android.widget.framelayout.(framelayout.java:94) android.widget.scrollview.(scrollview.java:155) android.widget.scrollview.(scrollview.java:151)

and getview() @override

public view getview(final int position, view view, viewgroup parent) { final int pos = position; views = null; layoutinflater layoutinflator = (layoutinflater) context .getsystemservice(context.layout_inflater_service); views = (relativelayout) layoutinflator.inflate( r.layout.guest_list_item, null); final checkbox chk = (checkbox) views.getchildat(0); // log.d("", "checkbox pos "+position); chk.setid(position); textview txtview = (textview) views.getchildat(1); textview txtview2 = (textview) views.getchildat(2); textview txtview3 = (textview) views.getchildat(3); final textview txtview4 = (textview) views.getchildat(4); textview txtview5 = (textview) views.getchildat(6); txtview5.setid(position); // log.d("", "button pos "+position); txtview4.setid(position); txtview4.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { intent intent = new intent(context, infoscreen.class); intent.putextra("idvalue", artempid.get(txtview4.getid())); intent.putextra("idvalue", arraylistid.get(position)); intent.addflags(intent.flag_activity_no_animation); context.startactivity(intent); // system.out.println(v + "##########" + " " + v.getid()); // system.out.println(v + "##########" + " " + // artempid.get(txtview4.getid())); // system.out.println(v + "##########" + " " + // chickinlist.get(txtview4.getid())); } }); log.e("", "****************************************************** "); // log.v("", "adapter arr pos " + pos); // log.v("", "adapter arr position " + position); log.v("", "adapter arr size " + arraylistfirstname.size()); log.v("", "passsing arr size " + chickinlist.size()); (int dd = 0; dd < arraylistfirstname.size(); dd++) { if (position == dd) { // log.d("", "passsing arr size " + chickinlist.size()); boolean result = chickinlist.get(position); // log.d("", "after " + result); if (result == true) { chk.setchecked(true); arrcheckeditems.add(position); views.setbackgroundresource(r.drawable.list_item_checked); } else { chk.setchecked(false); arruncheckeditems.add(position); views.setbackgroundresource(r.drawable.list_item_unchecked); } txtview.settext(arraylistfirstname.get(position)); txtview2.settext(arraylistlastname.get(position)); txtview3.settext("(" + arraylistguests.get(position) + ")"); if (arraycustomone.get(position).equalsignorecase("0") || arraycustomone.get(position).equalsignorecase(null) || arraycustomone.get(position).equalsignorecase( "(null)")) { txtview5.settext(""); } else { txtview5.settext(arraycustomone.get(position)); } } } chk.setoncheckedchangelistener(new oncheckedchangelistener() { @override public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) { mysqliteadapter.opentowrite(); sid = arraylistid.get(chk.getid()); // log.d("adapter", // "checked temp id "+artempid.get(chk.getid())); log.d("", "position " + chk.getid() + "tempid " + artempid.get(chk.getid())); if (ischecked) { chk.setchecked(true); arrcheckeditems.add(position); stralertvalue = "1"; scheckin = "1"; strexe = "update ticket_details set checkin_status=1 tempid=" + artempid.get(chk.getid()); mysqliteadapter.executecheckqurey(strexe); if (util.getinstance(context).istabletdevice()) { buttonview .setbackgroundresource(r.drawable.tablet_list_item_check); } else { buttonview .setbackgroundresource(r.drawable.list_item_checked); } new checkinupdate().execute(); alertdialog.builder builder = new alertdialog.builder( context); builder.create(); builder.setmessage(arraylistfirstname.get(chk.getid()) + " " + arraylistlastname.get(chk.getid()) + " has been checked in."); builder.setpositivebutton("ok", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // myguestlist = new guestlistscreen(); // // // myguestlist.listupdate();

// intent intentnavguestlist = new intent( // context, guestlistscreen.class); // intentnavguestlist // .addflags(intent.flag_activity_no_animation); // context.startactivity(intentnavguestlist);

dialog.dismiss(); } }).show(); // log.d("", "id = " + buttonview.getid()); } if (!ischecked) { scheckin = "0"; stralertvalue = "0"; // views.setbackgroundresource(r.drawable.list_item_unchecked); strexe = "update ticket_details set checkin_status=0 tempid=" + artempid.get(chk.getid()); mysqliteadapter.executecheckqurey(strexe); if (util.getinstance(context).istabletdevice()) { buttonview .setbackgroundresource(r.drawable.tablet_list_item_uncheck); } else { buttonview .setbackgroundresource(r.drawable.list_item_unchecked); } new checkinupdate().execute(); intent intentnavguestlist = new intent(context, guestlistscreen.class); intentnavguestlist .addflags(intent.flag_activity_no_animation); context.startactivity(intentnavguestlist); // toast.maketext(context, "check release", // toast.length_short) // .show(); // new checkinupdate().execute(); } } }); homecoming views; }

holder pattern right answer.it improve if implement "pagination" pattern listview. show next items when listview scrolled end. avoid long running task in adapetr. set separate info , adapter. can see utilize notifydatasetchanged () method.

android listview

No comments:

Post a Comment