this question has answer here:
i have code create parallax scrolling effect,i not found errors in code when run app crashes , shown run time exception in code,i did not understand problem is.can help??
here mainactivity
public class mainactivity extends activity { private int lasttop = 0; imageview image; listview listview; arrayadapter adapter; arraylist<string> items = new arraylist<>(); public void parallax(final view v) { final rect r = new rect(); v.getlocalvisiblerect(r); if (lasttop != r.top) { lasttop = r.top; v.post(new runnable() { @override public void run() { v.sety((float) (r.top / 2.0)); } }); } } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); listview = (listview) findviewbyid(r.id.listview); items.add("list item 1"); items.add("list item 2"); items.add("list item 3"); items.add("list item 4"); items.add("list item 5"); items.add("list item 6"); items.add("list item 7"); items.add("list item 8"); items.add("list item 9"); items.add("list item 10"); items.add("list item 11"); items.add("list item 12"); items.add("list item 13"); items.add("list item 14"); items.add("list item 15"); items.add("list item 16"); items.add("list item 17"); items.add("list item 18"); items.add("list item 19"); items.add("list item 20"); adapter = new arrayadapter(this, android.r.layout.simple_list_item_1, items); listview.setadapter(adapter); adapter.notifydatasetchanged(); view view = getlayoutinflater().inflate(r.layout.header, null, false); image = (imageview) view.findviewbyid(r.id.image); listview.addheaderview(view); listview.setonscrolllistener(new abslistview.onscrolllistener() { @override public void onscrollstatechanged(abslistview view, int scrollstate) { parallax(image); } @override public void onscroll(abslistview view, int firstvisibleitem, int visibleitemcount, int totalitemcount) { parallax(image); } }); } }
here logcat
java.lang.runtimeexception: unable start activity componentinfo{in.zoid.parallaxtutorial/in.zoid.parallaxtutorial.mainactivity}: java.lang.illegalstateexception: cannot add header view list -- setadapter has been called. @ android.app.activitythread.performlaunchactivity(activitythread.java:2110) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2135) @ android.app.activitythread.access$700(activitythread.java:140) @ android.app.activitythread$h.handlemessage(activitythread.java:1237) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:137) @ android.app.activitythread.main(activitythread.java:4921) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1027) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:794) @ dalvik.system.nativestart.main(native method) caused by: java.lang.illegalstateexception: cannot add header view list -- setadapter has been called. @ android.widget.listview.addheaderview(listview.java:261) @ android.widget.listview.addheaderview(listview.java:290) @ in.zoid.parallaxtutorial.mainactivity.oncreate(mainactivity.java:70) @ android.app.activity.performcreate(activity.java:5206) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1094) @ android.app.activitythread.performlaunchactivity(activitythread.java:2074)
apply change problem solve ::
public class mainactivity extends activity { private int lasttop = 0; imageview image; listview listview; arrayadapter adapter; arraylist<string> items = new arraylist<>(); public void parallax(final view v) { final rect r = new rect(); v.getlocalvisiblerect(r); if (lasttop != r.top) { lasttop = r.top; v.post(new runnable() { @override public void run() { v.sety((float) (r.top / 2.0)); } }); } } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); listview = (listview) findviewbyid(r.id.listview); items.add("list item 1"); items.add("list item 2"); items.add("list item 3"); items.add("list item 4"); items.add("list item 5"); items.add("list item 6"); items.add("list item 7"); items.add("list item 8"); items.add("list item 9"); items.add("list item 10"); items.add("list item 11"); items.add("list item 12"); items.add("list item 13"); items.add("list item 14"); items.add("list item 15"); items.add("list item 16"); items.add("list item 17"); items.add("list item 18"); items.add("list item 19"); items.add("list item 20"); view view = getlayoutinflater().inflate(r.layout.header, null, false); image = (imageview) view.findviewbyid(r.id.image); listview.addheaderview(view); adapter = new arrayadapter(this, android.r.layout.simple_list_item_1, items); listview.setadapter(adapter); adapter.notifydatasetchanged(); listview.setonscrolllistener(new abslistview.onscrolllistener() { @override public void onscrollstatechanged(abslistview view, int scrollstate) { parallax(image); } @override public void onscroll(abslistview view, int firstvisibleitem, int visibleitemcount, int totalitemcount) { parallax(image); } }); } }
Comments
Post a Comment