android - How to use custom adpter with endless adapter -
i trying work endless adapter , followed example
http://droidista.blogspot.com/2011/04/using-cwacs-endlessadapter-with-custom.html
and
i have tried code
public class mainactivity extends activity { static int list_size; private int mlastoffset = 0; static final int batch_size = 10; private rotateanimation rotate = null; arraylist<string> templist = new arraylist<string>(); string[] product = new string[]{"p1" , "p2" , "p3" , "p4" , "p5" ,"p6" , "p7" , "p8" , "p9" , "p10" , "p11" ,"p12" , "p13" , "p14" , "p15" , "p16" , "p17" ,"p18" , "p19" , "p20" , "p21" , "p22" , "p23" ,"p24" , "p1" , "p2" , "p3" , "p4" , "p5" ,"p6" , "p7" , "p8" , "p9" , "p10" , "p11" ,"p12" , "p13" , "p14" , "p15" , "p16" , "p17" ,"p18" , "p19" , "p20" , "p21" , "p22" , "p23" ,"p24" , "val1" , "val2" , "val3" , "val4" , "val5" ,"val6" , "val7" , "val8" , "val9" , "val10" , "val11" ,"val12" , "val13" , "val14" , "val15" , "val16" , "val17" ,"val18" , "val19" , "val20" , "val21" , "val22" , "val23" ,"val24" , "val1" , "val2" , "val3" , "val4" , "val5" ,"val6" , "val7" , "val8" , "val9" , "val10" , "val11" ,"val12" , "val13" , "val14" , "val15" , "val16" , "val17" ,"val18" , "val19" , "val20" , "val21" , "val22" , "val23" ,"val24"}; string[] shop_items = new string[]{"val1" , "val2" , "val3" , "val4" , "val5" ,"val6" , "val7" , "val8" , "val9" , "val10" , "val11" ,"val12" , "val13" , "val14" , "val15" , "val16" , "val17" ,"val18" , "val19" , "val20" , "val21" , "val22" , "val23" ,"val24" , "val1" , "val2" , "val3" , "val4" , "val5" ,"val6" , "val7" , "val8" , "val9" , "val10" , "val11" ,"val12" , "val13" , "val14" , "val15" , "val16" , "val17" ,"val18" , "val19" , "val20" , "val21" , "val22" , "val23" ,"val24" , "p1" , "p2" , "p3" , "p4" , "p5" ,"p6" , "p7" , "p8" , "p9" , "p10" , "p11" ,"p12" , "p13" , "p14" , "p15" , "p16" , "p17" ,"p18" , "p19" , "p20" , "p21" , "p22" , "p23" ,"p24" , "p1" , "p2" , "p3" , "p4" , "p5" ,"p6" , "p7" , "p8" , "p9" , "p10" , "p11" ,"p12" , "p13" , "p14" , "p15" , "p16" , "p17" ,"p18" , "p19" , "p20" , "p21" , "p22" , "p23" ,"p24"}; arraylist<string> prodcutlist1 = new arraylist<string>(); arraylist<string> vallist1 = new arraylist<string>(); listview simplelist ; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); simplelist = (listview)findviewbyid(r.id.listview1); init(); //displaylist(); (int i=0; i<product.length; i++){ vallist1.add(product[i]); } } private void init() { list_size = shop_items.length; (int i=0; i<=batch_size; i++){ prodcutlist1.add(shop_items[i]); // vallist1.add(product[i]); } setlastoffset(batch_size); displaylist(prodcutlist1); } private void setlastoffset(int i) { mlastoffset = i; } private int getlastoffset(){ return mlastoffset; } private void displaylist(arraylist<string> prodcutlist1) { simplelist.setadapter(new demoadapter()); } private class customarrayadapter extends arrayadapter<string>{ public customarrayadapter(context context, int resource, int textviewresourceid, list<string> objects) { super(context, resource, textviewresourceid, objects); } @override public view getview(int position, view convertview, viewgroup parent) { viewholder holder; if(convertview==null){ layoutinflater inflater = (layoutinflater) mainactivity.this.getsystemservice(context.layout_inflater_service); convertview = inflater.inflate(r.layout.set_aside_items, null); holder = new viewholder(); holder.word = (textview)convertview.findviewbyid(r.id.producttitle); holder.world = (textview)convertview.findviewbyid(r.id.price); convertview.settag(holder); } else{ holder=(viewholder)convertview.gettag(); } holder.word.settext(string.valueof(position+1) + ". " + prodcutlist1.get(position)); holder.world.settext(string.valueof(position+1) + ". " + vallist1.get(position)); return convertview; } public class viewholder{ public textview word , world; } } class demoadapter extends endlessadapter { private rotateanimation rotate=null; private view pendingview=null; arraylist<string> templist1 = new arraylist<string>(); arraylist<string> templist2 = new arraylist<string>(); demoadapter() { super(new customarrayadapter(mainactivity.this, android.r.layout.simple_list_item_1, android.r.id.text1, prodcutlist1)); rotate=new rotateanimation(0f, 360f, animation.relative_to_self, 0.5f, animation.relative_to_self, 0.5f); rotate.setduration(600); rotate.setrepeatmode(animation.restart); rotate.setrepeatcount(animation.infinite); } @override protected view getpendingview(viewgroup parent) { view row=getlayoutinflater().inflate(r.layout.row, null); view child=row.findviewbyid(android.r.id.text1); child.setvisibility(view.gone); child=row.findviewbyid(r.id.throbber); child.setvisibility(view.visible); child.startanimation(rotate); return(row); } @override protected boolean cacheinbackground() { templist1.clear(); templist2.clear(); int lastoffset = getlastoffset(); if(lastoffset < list_size){ int limit = lastoffset + batch_size; for(int i=(lastoffset+1); (i<=limit && i<list_size); i++){ templist1.add(shop_items[i]); templist2.add(product[i]); } setlastoffset(limit); if(limit<list_size){ return true; } else { return false; } } else { return false; } } @override protected void appendcacheddata() { @suppresswarnings("unchecked") arrayadapter<string> arradapternew1 = (arrayadapter<string>)getwrappedadapter(); @suppresswarnings("unchecked") arrayadapter<string> arradapternew2 = (arrayadapter<string>)getwrappedadapter(); int listlen = templist1.size(); for(int i=0; i<listlen; i++){ arradapternew1.add(templist1.get(i)); // arradapternew1. arradapternew1.add(templist2.get(i)); arradapternew1.notifydatasetchanged(); arradapternew2.add(templist2.get(i)); displaylist(templist1); } // } } void startprogressanimation() { if (pendingview!=null) { pendingview.startanimation(rotate); } } } }
but code works first ten values there after on scrolling gives following error
05-02 15:24:54.031: e/androidruntime(3001): fatal exception: main 05-02 15:24:54.031: e/androidruntime(3001): java.lang.indexoutofboundsexception: invalid index 11, size 11 05-02 15:24:54.031: e/androidruntime(3001): @ java.util.arraylist.throwindexoutofboundsexception(arraylist.java:251) 05-02 15:24:54.031: e/androidruntime(3001): @ java.util.arraylist.get(arraylist.java:304) 05-02 15:24:54.031: e/androidruntime(3001): @ com.example.smaple_endlessadapter.mainactivity$customarrayadapter.getview(mainactivity.java:145) 05-02 15:24:54.031: e/androidruntime(3001): @ com.commonsware.cwac.adapter.adapterwrapper.getview(adapterwrapper.java:117) 05-02 15:24:54.031: e/androidruntime(3001): @ com.commonsware.cwac.endless.endlessadapter.getview(endlessadapter.java:261) 05-02 15:24:54.031: e/androidruntime(3001): @ android.widget.abslistview.obtainview(abslistview.java:2143) 05-02 15:24:54.031: e/androidruntime(3001): @ android.widget.listview.makeandaddview(listview.java:1831) 05-02 15:24:54.031: e/androidruntime(3001): @ android.widget.listview.filldown(listview.java:674) 05-02 15:24:54.031: e/androidruntime(3001): @ android.widget.listview.fillgap(listview.java:638) 05-02 15:24:54.031: e/androidruntime(3001): @ android.widget.abslistview.trackmotionscroll(abslistview.java:4930) 05-02 15:24:54.031: e/androidruntime(3001): @ android.widget.abslistview.scrollifneeded(abslistview.java:3087) 05-02 15:24:54.031: e/androidruntime(3001): @ android.widget.abslistview.startscrollifneeded(abslistview.java:3032) 05-02 15:24:54.031: e/androidruntime(3001): @ android.widget.abslistview.ontouchevent(abslistview.java:3357) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.view.dispatchtouchevent(view.java:7246) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:2168) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:1903) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:2174) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:1917) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:2174) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:1917) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:2174) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:1917) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:2174) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:1917) 05-02 15:24:54.031: e/androidruntime(3001): @ com.android.internal.policy.impl.phonewindow$decorview.superdispatchtouchevent(phonewindow.java:1953) 05-02 15:24:54.031: e/androidruntime(3001): @ com.android.internal.policy.impl.phonewindow.superdispatchtouchevent(phonewindow.java:1405) 05-02 15:24:54.031: e/androidruntime(3001): @ android.app.activity.dispatchtouchevent(activity.java:2410) 05-02 15:24:54.031: e/androidruntime(3001): @ com.android.internal.policy.impl.phonewindow$decorview.dispatchtouchevent(phonewindow.java:1901) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.view.dispatchpointerevent(view.java:7426) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewrootimpl.deliverpointerevent(viewrootimpl.java:3220) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewrootimpl.deliverinputevent(viewrootimpl.java:3165) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewrootimpl.doprocessinputevents(viewrootimpl.java:4292) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewrootimpl.enqueueinputevent(viewrootimpl.java:4271) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewrootimpl$windowinputeventreceiver.oninputevent(viewrootimpl.java:4363) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.inputeventreceiver.dispatchinputevent(inputeventreceiver.java:179) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.inputeventreceiver.nativeconsumebatchedinputevents(native method) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.inputeventreceiver.consumebatchedinputevents(inputeventreceiver.java:171) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewrootimpl.doconsumebatchedinput(viewrootimpl.java:4342) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.viewrootimpl$consumebatchedinputrunnable.run(viewrootimpl.java:4382) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.choreographer$callbackrecord.run(choreographer.java:749) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.choreographer.docallbacks(choreographer.java:562) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.choreographer.doframe(choreographer.java:530) 05-02 15:24:54.031: e/androidruntime(3001): @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:735) 05-02 15:24:54.031: e/androidruntime(3001): @ android.os.handler.handlecallback(handler.java:725) 05-02 15:24:54.031: e/androidruntime(3001): @ android.os.handler.dispatchmessage(handler.java:92) 05-02 15:24:54.031: e/androidruntime(3001): @ android.os.looper.loop(looper.java:137) 05-02 15:24:54.031: e/androidruntime(3001): @ android.app.activitythread.main(activitythread.java:5041) 05-02 15:24:54.031: e/androidruntime(3001): @ java.lang.reflect.method.invokenative(native method) 05-02 15:24:54.031: e/androidruntime(3001): @ java.lang.reflect.method.invoke(method.java:511) 05-02 15:24:54.031: e/androidruntime(3001): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793) 05-02 15:24:54.031: e/androidruntime(3001): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:560) 05-02 15:24:54.031: e/androidruntime(3001): @ dalvik.system.nativestart.main(native method)
how can make custom list endless adapter?
Comments
Post a Comment