java - ExpandableListView Order Changed When Click -


when click groupview order of expandablelist changes

i've found 1 similiar problem here

the order seems random, don't understand happened.

here's code, know it's mess, i've rewritten lot of times.

public class managelistadapter extends baseexpandablelistadapter{  public static final int server_type=0x000001; public static final int history_type=0x000002;  private list<serverelement> mdata;  private layoutinflater minflater; private int viewtype;   public managelistadapter (context c,int type,arraylist<serverelement> data){     minflater = (layoutinflater)c.getsystemservice(context.layout_inflater_service);     mdata=(list<serverelement>) collections.synchronizedlist(new arraylist<serverelement>());     mdata=data; }  @override public object getchild(int groupposition, int childposition) {     // todo auto-generated method stub     return mdata.get(groupposition); }  @override public long getchildid(int groupposition, int childposition) {     // todo auto-generated method stub     return childposition; }  @override public view getchildview(int groupposition, int childposition,         boolean islastchild, view convertview, viewgroup parent) {     // todo auto-generated method stub     viewholder viewholder;     if(convertview==null){         convertview=minflater.inflate(r.layout.managelistchildelement, null);          edittext ip=(edittext) convertview.findviewbyid(r.id.manageip);         ip.settext(mdata.get(groupposition).mip);          edittext port=(edittext) convertview.findviewbyid(r.id.manageport);         port.settext(mdata.get(groupposition).mport);          edittext username=(edittext) convertview.findviewbyid(r.id.manageusername);         username.settext(mdata.get(groupposition).musername);          edittext password=(edittext) convertview.findviewbyid(r.id.managepwd);         password.settext(mdata.get(groupposition).mpassword);          imagebutton btnupdate=(imagebutton) convertview.findviewbyid(r.id.okbtn);          viewholder=new viewholder(ip,groupposition);         switch(this.viewtype){         case history_type:             ip.setfocusable(false);             port.setfocusable(false);             username.setfocusable(false);             password.setfocusable(false);             btnupdate.setvisibility(view.invisible);             break;         case server_type:             btnupdate.setfocusable(false);             break;         }         convertview.settag(viewholder);     }else{         viewholder=(viewholder) convertview.gettag();     }     return convertview; }  @override public int getchildrencount(int groupposition) {     // todo auto-generated method stub     return 1; }  @override public object getgroup(int groupposition) {     // todo auto-generated method stub     return mdata.get(groupposition); }  @override public int getgroupcount() {     // todo auto-generated method stub     return mdata.size(); }  @override public long getgroupid(int groupposition) {     // todo auto-generated method stub     return groupposition; }  public void deleteitem(int groupposition){     if(mdata.size()<=0) return;     int i=0;     while (groupposition+i+1<mdata.size()) {         mdata.set(groupposition+i, mdata.get(groupposition+i+1));         i++;     }     mdata.remove(mdata.size()-1);     notifydatasetchanged(); }  public void additem(serverelement element){      mdata.add(element);     notifydatasetchanged(); }  @override public view getgroupview(int groupposition, boolean isexpanded,         view convertview, viewgroup parent) {     // todo auto-generated method stub     viewholder viewholder;     if(convertview==null){         convertview=minflater.inflate(r.layout.managelistgroupelement, null);          textview view=(textview) convertview.findviewbyid(r.id.elementcaption);         imageview viewdelete=(imageview) convertview.findviewbyid(r.id.deletebtn);         //viewdelete.setfocusable(false);         view.settext(mdata.get(groupposition).mname);         view.setgravity(gravity.center_vertical | gravity.left);         view.setpadding(36, 0, 0, 0);         if(groupposition==0){             log.v("managelistadapter", "still can 0");         }         viewholder=new viewholder(view,groupposition);         viewdelete.setonclicklistener(new onclicklistener(){              @override             public void onclick(view v) {                 // todo auto-generated method stub                 deleteitem(getviewholder(v).position);             }          });         convertview.settag(viewholder);     }else{         viewholder=(viewholder) convertview.gettag();     }     return convertview; }  @override public boolean hasstableids() {     // todo auto-generated method stub     return false; }  @override public boolean ischildselectable(int groupposition, int childposition) {     // todo auto-generated method stub     return true; }  @override public boolean areallitemsenabled() {     return true; }   public static class viewholder{     private textview txtview;     public final int position;      public viewholder(textview view,int position){         this.txtview=view;         this.position=position;     } }  public viewholder getviewholder(view v) {     if(v.gettag() == null)     {         return getviewholder((view)v.getparent());     }     return (viewholder)v.gettag(); }  private class ondeleteclicklistener implements onclicklistener{                private int mgroupposition;     ondeleteclicklistener(int groupposition){             mgroupposition = groupposition;     }     @override     public void onclick(view v) {         // todo auto-generated method stub         log.v("managelistadapter","deleting group "+mgroupposition);         deleteitem(mgroupposition);     }                }  private class onupdateclicklistener implements onclicklistener{                private int mgroupposition;     private int mchildrenposition;     onupdateclicklistener(int groupposition,int childrenposition){             mgroupposition = groupposition;             mchildrenposition=childrenposition;      }     @override     public void onclick(view v) {         // todo auto-generated method stub         additem(mdata.get(mgroupposition));     }                } 

}

and layout

managelistchildelement.xml

<?xml version="1.0" encoding="utf-8"?> <tablelayout android:id="@+id/tablelayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">     <tablerow android:id="@+id/tablerow1" android:layout_width="wrap_content" android:layout_height="wrap_content">         <textview android:textappearance="?android:attr/textappearancemedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview1" android:text="@string/ip:port"></textview>         <edittext android:id="@+id/manageip" android:layout_width="wrap_content" android:layout_height="wrap_content">             <requestfocus></requestfocus>         </edittext>         <textview android:textappearance="?android:attr/textappearancemedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview2" android:text="@string/:"></textview>         <edittext android:id="@+id/manageport" android:layout_width="wrap_content" android:layout_height="wrap_content"></edittext>     </tablerow>     <tablerow android:id="@+id/tablerow2" android:layout_width="wrap_content" android:layout_height="wrap_content">         <textview android:textappearance="?android:attr/textappearancemedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview3" android:text="@string/username"></textview>         <edittext android:id="@+id/manageusername" android:layout_width="wrap_content" android:layout_height="wrap_content"></edittext>     </tablerow>     <tablerow android:id="@+id/tablerow3" android:layout_width="wrap_content" android:layout_height="wrap_content">         <textview android:textappearance="?android:attr/textappearancemedium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview4" android:text="@string/password"></textview>         <edittext android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputtype="textpassword" android:id="@+id/managepwd"></edittext>         <imagebutton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ok" android:id="@+id/okbtn" android:focusable="false" android:focusableintouchmode="false"></imagebutton>     </tablerow> </tablelayout> 

managelistgroupelement.xml

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_height="fill_parent" android:orientation="horizontal"     android:layout_width="wrap_content" android:baselinealigned="false">     <textview android:textappearance="?android:attr/textappearancemedium"         android:layout_height="wrap_content" android:text="textview"         android:id="@+id/elementcaption" android:layout_weight="1"         android:layout_width="0dp"></textview>     <imageview android:src="@drawable/delete" android:id="@+id/deletebtn"         android:layout_gravity="right" android:layout_weight="1"         android:layout_height="wrap_content" android:layout_width="wrap_content"         android:focusable="false" android:focusableintouchmode="false"></imageview>  </linearlayout> 


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

visual c++ - Using relative values in array sorting ( asm ) -