this question has answer here:
- what nullpointerexception, , how fix it? 12 answers
i new android-dev , experiencing following problem:
ui-elements
of view list_excercises_item
, shows listview's item, not referenceable findviewbyid()
only in the mainactivity
-file.
reference ui-elements
of list_excercises_item
in own arrayadapter
.
context:
want fill spinner
data using arrayadapter
.
exception:
java.lang.nullpointerexception @ example.trackfit.mainactivity.oncreate(mainactivity.java:28)
this instruction throws it: spinbodycategory.setadapter(arrayadapter);
spinbodycategory
null
.
list_excercises_item.xml:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightsum="1" android:layout_marginbottom="10px"> <edittext android:layout_width="0dp" android:layout_height="fill_parent" android:textappearance="?android:attr/textappearancemedium" android:id="@+id/txt_excercise_name" android:hint="@string/hint_txt_excercise_name" android:layout_weight="0.4" android:inputtype="text" /> <edittext android:layout_width="0dp" android:layout_height="fill_parent" android:inputtype="numberdecimal" android:ems="10" android:id="@+id/txt_input_weight" android:paddingleft="5px" android:layout_weight="0.20" android:hint="@string/hint_txt_input_weight" /> <spinner android:layout_width="0dp" android:layout_height="fill_parent" android1:textappearance="?android:attr/textappearancemedium" android:id="@+id/spin_body_category" android:hint="@string/hint_txt_excercise_name" android:gravity="right" android:layout_weight="0.40" android:inputtype="text" /> </linearlayout>
mainactivity.java:
package example.trackfit; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.widget.arrayadapter; import android.widget.listview; import android.widget.spinner; import java.util.arraylist; import example.trackfit.models.body; import example.trackfit.models.excercise; public class mainactivity extends appcompatactivity { private spinner spinbodycategory = null; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); populateexcerciselist(); body[] bodies = body.values(); arrayadapter<body> arrayadapter = new arrayadapter<body>(this, r.layout.list_excercises_item, bodies); listview listview = (listview)findviewbyid(r.id.list_excercises); spinbodycategory = (spinner)findviewbyid(r.id.spin_body_category); spinbodycategory.setadapter(arrayadapter); } private void populateexcerciselist() { arraylist<excercise> excercises = excercise.getexcercises(); customexcerciseadapter adapter = new customexcerciseadapter(this, excercises); listview listview = (listview)findviewbyid(r.id.list_excercises); listview.setadapter(adapter); } }
customexcerciseadapter.java:
package example.trackfit; import android.content.context; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.arrayadapter; import android.widget.edittext; import java.util.arraylist; import example.trackfit.models.excercise; public class customexcerciseadapter extends arrayadapter<excercise> { public customexcerciseadapter(context context, arraylist<excercise> excercises) { super(context, 0, excercises); } @override public view getview(int position, view convertview, viewgroup parent) { excercise excercise = getitem(position); if (convertview == null) convertview = layoutinflater.from(getcontext()).inflate(r.layout.list_excercises_item, parent, false); edittext txtexcercisename = (edittext) convertview.findviewbyid(r.id.txt_excercise_name); edittext txtinputweight = (edittext) convertview.findviewbyid(r.id.txt_input_weight); txtexcercisename.settext(excercise.excercisename); txtinputweight.settext(float.tostring(excercise.weight)); return convertview; } }
edit:
question not duplicate, ofc know nullreferenceexception
is.
did not know why exception thrown, since - new android-dev , didnt know can access childs of view set contentview
.
because findviewbyid
called mainactivity.java
, trying find spinner layout set: activity_main.xml
. why getting null pointer exception.
since have spinner each item on list, have set getview
in custom adapter.
try copying , pasting
body[] bodies = body.values(); arrayadapter<body> arrayadapter = new arrayadapter<body>(this, r.layout.list_excercises_item, bodies); spinbodycategory = (spinner)convertview.findviewbyid(r.id.spin_body_category); spinbodycategory.setadapter(arrayadapter);
to getview
Comments
Post a Comment