android - setOnItemClickListener Not Working In Custom Listview -


i have implemented custom listview extending relative layout every row.

every row has checkbox,textview,edittext. working fine. maintains states. listview onitemclicklistener working till row having checkbox , textview. stopped working added edittext in row.
appreciable.

this code

@override public view getview(int position, view convertview, viewgroup parent) {     viewholder viewholder = null;     if (convertview == null) {          layoutinflater inflator = context.getlayoutinflater();         convertview = inflator.inflate(r.layout.takeso_row, null);         viewholder = new viewholder();         viewholder.text = (textview) convertview.findviewbyid(r.id.takesolabel);         viewholder.checkbox = (checkbox) convertview.findviewbyid(r.id.takesocheck);         viewholder.edittext = (edittext) convertview.findviewbyid(r.id.takesoquantity);          viewholder.edittext.setclickable(true);         viewholder.edittext.setfocusable(true);          viewholder.edittext.setonfocuschangelistener(new onfocuschangelistener() {              public void onfocuschange(view v, boolean hasfocus) {                 // todo auto-generated method stub                 int getposition = (integer) v.gettag();                  if(!hasfocus){                     //final int pos = position;                     final edittext quantity = (edittext) v;                     //product prod = (product)v.gettag();                     if(quantity.gettext().tostring().length() == 0){                         list.get(getposition).setprodquantity(0);                     }else{                         list.get(getposition).setprodquantity(integer.parseint(quantity.gettext().tostring()));                     }                 }             }         });          viewholder.checkbox.setoncheckedchangelistener(new oncheckedchangelistener() {              public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) {                 // todo auto-generated method stub                 int getposition = (integer) buttonview.gettag();  // here position have set checkbox using settag.                  list.get(getposition).setischecked(buttonview.ischecked()); // set value of checkbox maintain state.                   for(int i=0; < passlist.size(); i++)                  {                      if(list.get(getposition).getproductid().compareto(passlist.get(i).getproductid()) == 0){                          passlist.get(i).setischecked(ischecked);                          //log.d(passlist.get(i).getproductname(), passlist.get(i).getischecked().tostring());                      }                  }             }         });          convertview.settag(viewholder);         convertview.settag(r.id.label, viewholder.text);         convertview.settag(r.id.check, viewholder.checkbox);         convertview.settag(r.id.check, viewholder.edittext);     }else{         viewholder = (viewholder) convertview.gettag();     }      viewholder.checkbox.settag(position); // line important.     viewholder.edittext.settag(position);     viewholder.text.settext(list.get(position).getproductname());     viewholder.checkbox.setchecked(list.get(position).getischecked());     viewholder.edittext.settext(list.get(position).getprodquantity().tostring());      return convertview; }` 

xml code-

`

<checkbox android:id="@+id/takesocheck" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_marginleft="4dip" android:layout_marginright="10dip" android:focusable="false" android:focusableintouchmode="false"> </checkbox>  <textview android:id="@+id/takesolabel" android:layout_width="wrap_content"   android:layout_height="40sp"   android:textsize="25sp" android:layout_torightof="@id/takesocheck"> </textview>  <edittext android:id="@+id/takesoquantity"     android:layout_alignparentright="true"     android:layout_width="120dip"     android:layout_height="wrap_content"     style="@style/edittext"     android:inputtype="number"     android:layout_gravity="right"     android:selectallonfocus="true"/>  <view android:layout_width="fill_parent"         android:layout_height="1dp"         android:background="@drawable/blue"         android:layout_below="@id/takesocheck"/> 

`

add

android:focusable="false" 

attribute checkbox. stop checkbox stealing list item clicks.

add android:descendantfocusability="beforedescendants" listview makes viewgroup focus before of descendants.


Comments