java - UI-Elements of 2nd View arent referenceable by findViewById (NullReference) -


this question has answer here:

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