android - Run time exception in the code -


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