android - Buttons Missing When Scroll the ListView -


when click listview item, particular item button visible. when scroll listview buttons gone. how implement functionality. wrong in please me. thanks

here code:

mainactivity.java

public class mainactivity extends activity {      listview lv;     sampleadapter sa;     arraylist<string> as=new arraylist<string>();     @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         for(int i=0;i<20;i++)         {             as.add(string.valueof(i));         }         lv=(listview)findviewbyid(r.id.listview1);         sa=new sampleadapter(mainactivity.this);         lv.setadapter(sa);          }     class sampleadapter extends baseadapter     {          context ctx;         button b;         textview tv;         layoutinflater lin;         public sampleadapter(context ct) {             this.ctx=ct;         }          @override         public int getcount() {             // todo auto-generated method stub             return as.size();         }          @override         public object getitem(int arg0) {             // todo auto-generated method stub             return arg0;         }          @override         public long getitemid(int arg0) {             // todo auto-generated method stub             return arg0;         }          @override         public view getview(int pos, view arg1, viewgroup arg2) {             // todo auto-generated method stub             lin=(layoutinflater)ctx.getsystemservice(layout_inflater_service);             arg1=lin.inflate(r.layout.li, null);             tv=(textview)arg1.findviewbyid(r.id.textview1);             b=(button)arg1.findviewbyid(r.id.button1);             tv.settext(as.get(pos));             b.settext(as.get(pos));             arg1.setonclicklistener(new onclicklistener() {                  @override                 public void onclick(view v) {                     button c=(button)v.findviewbyid(r.id.button1);                     c.setvisibility(view.visible);                 }             });             return arg1;         }      }     } 

activity_main.xml

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent" >      <listview         android:id="@+id/listview1"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_weight="1" >     </listview>  </linearlayout> 

li.xml

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical" >      <textview         android:id="@+id/textview1"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="textview" />      <button         android:id="@+id/button1"         style="?android:attr/buttonstylesmall"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:visibility="invisible"         android:text="button" />  </linearlayout> 

you have

android:visibility="invisible" 

this makes button not visible.

and have

c.setvisibility(view.visible); 

you need understand listview recycles views. when scroll buttons become invisible because views recycled.

check below link

how listview's recycling mechanism works

well check example similar yours

listview subobject clickable confilct

to fix can use model class

model class

public class model { int visibility;  string value;   public int getvisibility() {     return visibility; } public void setvisibility(int visibility) {     this.visibility = visibility; } public string getvalue() {     return value; } public void setvalue(string value) {     this.value = value; }  } 

mainactivity.java

public class mainactivity extends activity {      listview lv;     sampleadapter sa;     final int visible1 = view.invisible;     final int visible2 = view.visible;     arraylist<model> as=new arraylist<model>();     @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         for(int i=0;i<20;i++)         {             model model  = new model();             model.setvalue(string.valueof(i));             model.setvisibility(visible1);             as.add(model);         }         lv=(listview)findviewbyid(r.id.listview1);         sa=new sampleadapter(mainactivity.this);         lv.setadapter(sa);          }     class sampleadapter extends baseadapter     {          context ctx;         button b;         textview tv;         layoutinflater lin;         public sampleadapter(context ct) {             this.ctx=ct;         }          @override         public int getcount() {             // todo auto-generated method stub             return as.size();         }          @override         public object getitem(int arg0) {             // todo auto-generated method stub             return arg0;         }          @override         public long getitemid(int arg0) {             // todo auto-generated method stub             return arg0;         }          @override         public view getview(int pos, view arg1, viewgroup arg2) {             // todo auto-generated method stub             lin=(layoutinflater)ctx.getsystemservice(layout_inflater_service);             arg1=lin.inflate(r.layout.fg, null);             tv=(textview)arg1.findviewbyid(r.id.textview1);             b=(button)arg1.findviewbyid(r.id.button1);             tv.settext(as.get(pos).getvalue());             b.settext(as.get(pos).getvalue());             arg1.settag(pos);             b.setvisibility(as.get(pos).getvisibility());             arg1.setonclicklistener(new onclicklistener() {                  @override                 public void onclick(view v) {                      int pos = (int) v.gettag();                     model model = as.get(pos);                     model.setvisibility(visible2);                     sampleadapter.this.notifydatasetchanged();                  }             });             return arg1;         }      }     } 

snap

you can scroll , down , state remains

enter image description here


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -