android - ListView Adapter: Unable to start activity ComponentInfo{..} : java.lang.NullPointerException -
i'm trying start new activity, , i'm getting nullpointerexception
. i'm not quite sure getting nullpointerexception
. during debug app crashes when creating adapter, can't see did wrong nullpointerexception
in code.
error log:
java.lang.runtimeexception: unable start activity componentinfo{com.app.app/com.app.app.spaactivity}: java.lang.nullpointerexception @ android.app.activitythread.performlaunchactivity(activitythread.java:2394) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2446) @ android.app.activitythread.access$600(activitythread.java:165) @ android.app.activitythread$h.handlemessage(activitythread.java:1373) @ android.os.handler.dispatchmessage(handler.java:107) @ android.os.looper.loop(looper.java:194) @ android.app.activitythread.main(activitythread.java:5434) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:525) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:834) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) @ dalvik.system.nativestart.main(native method) caused by: java.lang.nullpointerexception @ com.app.adapter.spalistadapter.<init>(spalistadapter.java:25) @ com.app.app.spaactivity.oncreate(spaactivity.java:43) @ android.app.activity.performcreate(activity.java:5122) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1146) @ android.app.activitythread.performlaunchactivity(activitythread.java:2358) at android.app.activitythread.handlelaunchactivity(activitythread.java:2446) at android.app.activitythread.access$600(activitythread.java:165) at android.app.activitythread$h.handlemessage(activitythread.java:1373) at android.os.handler.dispatchmessage(handler.java:107) at android.os.looper.loop(looper.java:194) at android.app.activitythread.main(activitythread.java:5434) at java.lang.reflect.method.invokenative(native method) at java.lang.reflect.method.invoke(method.java:525) at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:834) at com.android.internal.os.zygoteinit.main(zygoteinit.java:601) at dalvik.system.nativestart.main(native method)
spaactivity.java
public class spaactivity extends activity { private progressdialog pdialog; private list<spa> spalist = new arraylist<spa>(); private listview listview; private spalistadapter adapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_spa); listview = (listview) findviewbyid(r.id.list); adapter = new spalistadapter(this, spalist); listview.setadapter(adapter);
activity_spa.xml
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <listview android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:divider="@color/list_divider" android:dividerheight="1dp" android:listselector="@layout/list_row_selector" /> </relativelayout>
the adapter listview:
public class spalistadapter extends baseadapter { private activity activity; private layoutinflater inflater; private list<spa> spaitems; imageloader imageloader = appcontroller.getinstance().getimageloader(); public spalistadapter(activity activity, list<spa> spaitems) { this.activity = activity; this.spaitems = spaitems; } @override public int getcount() { return spaitems.size(); } @override public object getitem(int location) { return spaitems.get(location); } @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { if (inflater == null) inflater = (layoutinflater) activity .getsystemservice(context.layout_inflater_service); if (convertview == null) convertview = inflater.inflate(r.layout.list_row, null); if (imageloader == null) imageloader = appcontroller.getinstance().getimageloader(); networkimageview thumbnail = (networkimageview) convertview .findviewbyid(r.id.thumbnail); textview title = (textview) convertview.findviewbyid(r.id.title); textview duration = (textview) convertview.findviewbyid(r.id.duration); textview description = (textview) convertview.findviewbyid(r.id.description); textview price = (textview) convertview.findviewbyid(r.id.price); // getting spa data row spa s = spaitems.get(position); // thumbnail image thumbnail.setimageurl(s.getthumbnailurl(), imageloader); // title title.settext(s.gettitle()); // duration duration.settext("time: " + string.valueof(s.getduration())); // description description.settext(string.valueof(s.getdescription())); // price price.settext("price: " + string.valueof(s.getprice())); return convertview; } }
and list_row.xml adapter
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@layout/list_row_selector" android:padding="8dp" > <!-- thumbnail image --> <com.android.volley.toolbox.networkimageview android:id="@+id/thumbnail" android:layout_width="80dp" android:layout_height="80dp" android:layout_alignparentleft="true" android:layout_marginright="8dp" /> <!-- spa title --> <textview android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_aligntop="@+id/thumbnail" android:layout_torightof="@+id/thumbnail" android:textsize="@dimen/title" android:textstyle="bold" /> <!-- duration --> <textview android:id="@+id/duration" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/title" android:layout_margintop="1dip" android:layout_torightof="@+id/thumbnail" android:textsize="@dimen/rating" /> <!-- description --> <textview android:id="@+id/description" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/duration" android:layout_margintop="5dp" android:layout_torightof="@+id/thumbnail" android:textcolor="@color/genre" android:textsize="@dimen/genre" /> <!-- price --> <textview android:id="@+id/price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_alignparentright="true" android:textcolor="@color/year" android:textsize="@dimen/year" /> </relativelayout>
the error on line 25 in spalistadatper class. method getitemid() needs modified.
@override public long getitemid(int position) { return spaitems.indexof(getitem(position)); }
Comments
Post a Comment