android - Why my ListView entry is clickable? -


here getview function in adapter:

public view getview(int position, view convertview, viewgroup parent) {         final resultitem item;         final textview fn;         final view rd;         item = list.get(position);          convertview = new relativelayout(mcontext);          if (position % 2 == 0) {             convertview.setbackgroundcolor(color_result_entry1);         } else {             convertview.setbackgroundcolor(color_result_entry2);         }          convertview.setminimumheight(entry_minimum_height);          layoutentry(convertview, parent, relativelayout.layoutparams.match_parent,                  relativelayout.layoutparams.wrap_content);          fn = new textview(mcontext);         fn.settextsize(generic_text_size);         fn.settext(item.fieldname);         layoutitem(fn, (int) (parent.getwidth() * field_name_width), relativelayout.layoutparams.wrap_content, 0, 0);          if (item.type == type1) {             rd = new edittext(mcontext);             ((edittext) rd).settextsize(generic_text_size);             ((edittext) rd).settext((string) item.retrieveddata);             ((edittext) rd).setbackgrounddrawable(null);              rd.setonkeylistener(new onkeylistener() {                  @override                 public boolean onkey(view v, int keycode, keyevent event) {                      if ((event.getaction() == keyevent.action_down) && (keycode == keyevent.keycode_enter)) {                         item.retrieveddata = ((edittext) rd).gettext().tostring();                     }                      return false;                 }              });          } else if (item.type == type2) {             rd = new textview(mcontext);             ((textview) rd).settextsize(generic_text_size);             ((textview) rd).settext((string) item.retrieveddata);              rd.setonlongclicklistener(new onlongclicklistener() {                  @override                 public boolean onlongclick(view v) {                     if (((textview) rd).gettext().tostring().equals(resultitem.checked)) {                         ((textview) rd).settext(resultitem.unchecked);                         item.retrieveddata = resultitem.unchecked;                     } else {                         ((textview) rd).settext(resultitem.checked);                         item.retrieveddata = resultitem.checked;                     }                      return true;                 }              });          } else if (item.type == type3) {             rd = new textview(mcontext);             ((textview) rd).settextsize(generic_text_size);             ((textview) rd).settext((string) item.retrieveddata);         } else if (item.type == type4) {             rd = new imageview(mcontext);             ((imageview) rd).setimagebitmap((bitmap) item.retrieveddata);         } else {             rd = new textview(mcontext);             ((textview) rd).settext((string) item.retrieveddata);         }          layoutitem(rd, (int) (parent.getwidth() * (1.0f - field_name_width)),                  relativelayout.layoutparams.wrap_content, (int) (parent.getwidth() * field_name_width), 0);          ((relativelayout) convertview).addview(fn);         ((relativelayout) convertview).addview(rd);          return convertview;     } 

list arraylist holds data want put on listview. layoutentry , layoutitem 2 functions set view width, height , positions. there 4 types of entries want return based on type field of item.

the weird thing when click on list entry corresponding type2 , type4, background color of entry turned. taking click effect. however, type4 didn't implement clicklistener, type2 listener rd, not convertview. if click on entry returned type1 , type3, nothing happens, expected. why weird thing happening on type2 , type4?

as far got you have custom listview should have custom xml describes list item. think need closer xml.


Comments