java - Listview sometimes null when I use gettag -


i have problem view in android. use gridview items inside it. each item have name, button,description , icon. each item has listview. when click on button want show listview linked button.

on startup works, when scroll , down few times listview either doesn't show or shows wrong listview.

i have read alot of other questions , articles, cant find thing doing wrong.

also tried still gives same result

if (convertview == null){                  holder = new new listholder();     convertview.settag(holder);                                          }  else {     holder = (listholder) convertview.gettag();                } 

the getview

  @override     public view getview(int position, view convertview, viewgroup parent) {         view row = convertview;         listholder holder;         harmonicaitem harmonicaitem = ((mainactivity) context).getharmonicaitems().get(position);          if (row == null) {             layoutinflater inflater = ((activity) context).getlayoutinflater();             row = inflater.inflate(layoutresourceid, parent, false);          }          holder = new listholder();         holder.logo = (imageview) row.findviewbyid(r.id.logo);         holder.line = (textview) row.findviewbyid(r.id.line);         holder.button = (button) row.findviewbyid(r.id.button);         holder.listview = (listview) row.findviewbyid(r.id.subharmonica);          holder.logo.setimageresource(harmonicaitem.logo);         holder.button.settext(harmonicaitem.title);         holder.button.setonclicklistener(onclicklistener);          harmonicaitem.listview = holder.listview;         harmonicaitem.button = holder.button;          holder.listview.settag(harmonicaitem);         holder.button.settag(harmonicaitem);          row.settag(holder);          return row;     } 

the model class

static class listholder {     imageview logo;     textview line;     button button;     listview listview; } 

how retrieve item

 @override public void onclick(view v) {     harmonicaitem item = (harmonicaitem) v.gettag(); } 

layout of item inside gridview:

<relativelayout     android:id="@+id/buttonlayout"     android:layout_width="wrap_content"     android:layout_height="wrap_content">  <button     android:id="@+id/button"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:background="@android:color/transparent"     android:gravity="center_vertical|left"     android:paddingleft="115dp"     android:paddingright="10dp"     android:text="loop"     android:textcolor="@android:color/black"     android:textstyle="bold"/>  <imageview     android:id="@+id/logo"     android:layout_width="35dp"     android:layout_height="35dp"     android:layout_alignparentleft="true"     android:layout_centervertical="true"     android:layout_marginleft="10dp" />  <textview     android:id="@+id/line"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignbaseline="@+id/button"     android:layout_alignbottom="@+id/button"     android:layout_centervertical="true"     android:layout_marginleft="10dp"     android:layout_torightof="@+id/logo"     android:text="00:00"     android:textappearance="?android:attr/textappearancemedium"     android:textcolor="@android:color/black"     android:textstyle="bold"/> </relativelayout>  <listview     android:id="@+id/subharmonica"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:layout_below="@id/buttonlayout"     android:visibility="gone"/> 

so summary of problem: item.listview null , wrong listview.

my goal fill listview , make visible when click button.

what doing wrong?

edit

apparently made mistake in other code. when listviews went gone saved listview. when wanted show again took wrong list. there nothing wrong adapter.

try this. issue in code 1. miss else part 2.need set tag inside if condition

@override     public view getview(int position, view convertview, viewgroup parent) {         view row = convertview;         listholder holder;         harmonicaitem harmonicaitem = ((mainactivity) context).getharmonicaitems().get(position);          if (row == null) {             layoutinflater inflater = ((activity) context).getlayoutinflater();             row = inflater.inflate(layoutresourceid, parent, false); holder = new listholder();         holder.logo = (imageview) row.findviewbyid(r.id.logo);         holder.line = (textview) row.findviewbyid(r.id.line);         holder.button = (button) row.findviewbyid(r.id.button);         holder.listview = (listview) row.findviewbyid(r.id.subharmonica);  holder.listview.settag(harmonicaitem);         holder.button.settag(harmonicaitem);   row.settag(holder);          }else{ holder = (listholder)row.gettag(); }            holder.logo.setimageresource(harmonicaitem.logo);         holder.button.settext(harmonicaitem.title);         holder.button.setonclicklistener(onclicklistener);               return row;     } 

edit: removed 2 lines of code in is

armonicaitem.listview = holder.listview;         harmonicaitem.button = holder.button; 

i think not needed. try without this.


Comments

Popular posts from this blog

javascript - Google App Script ContentService downloadAsFile not working -

javascript - Function overwritting -

php - Find a regex to take part of Email -