Android: A NullPointerException occurs when scroll ExpandableListView -


07-17 15:57:45.523: w/dalvikvm(6777): threadid=1: thread exiting uncaught exception (group=0x4001d5a0) 07-17 15:57:45.583: w/system.err(6777): java.lang.nullpointerexception 07-17 15:57:45.583: w/system.err(6777):     @ android.widget.textview.ontouchevent(textview.java:7503) 07-17 15:57:45.583: w/system.err(6777):     @ android.view.view.dispatchtouchevent(view.java:3933) 07-17 15:57:45.583: w/system.err(6777):     @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:906) 07-17 15:57:45.583: w/system.err(6777):     @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:906) 07-17 15:57:45.583: w/system.err(6777):     @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:906) 07-17 15:57:45.583: w/system.err(6777):     @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:906) 07-17 15:57:45.593: w/system.err(6777):     @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:906) 07-17 15:57:45.593: w/system.err(6777):     @ com.android.internal.policy.impl.phonewindow$decorview.superdispatchtouchevent(phonewindow.java:1881) 07-17 15:57:45.593: w/system.err(6777):     @ com.android.internal.policy.impl.phonewindow.superdispatchtouchevent(phonewindow.java:1216) 07-17 15:57:45.593: w/system.err(6777):     @ android.app.activity.dispatchtouchevent(activity.java:2228) 07-17 15:57:45.593: w/system.err(6777):     @ com.android.internal.policy.impl.phonewindow$decorview.dispatchtouchevent(phonewindow.java:1856) 07-17 15:57:45.593: w/system.err(6777):     @ android.view.viewroot.deliverpointerevent(viewroot.java:2382) 07-17 15:57:45.593: w/system.err(6777):     @ android.view.viewroot.handlemessage(viewroot.java:2010) 07-17 15:57:45.593: w/system.err(6777):     @ android.os.handler.dispatchmessage(handler.java:99) 07-17 15:57:45.593: w/system.err(6777):     @ android.os.looper.loop(looper.java:150) 07-17 15:57:45.593: w/system.err(6777):     @ android.app.activitythread.main(activitythread.java:4312) 07-17 15:57:45.593: w/system.err(6777):     @ java.lang.reflect.method.invokenative(native method) 07-17 15:57:45.593: w/system.err(6777):     @ java.lang.reflect.method.invoke(method.java:507) 07-17 15:57:45.593: w/system.err(6777):     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:849) 07-17 15:57:45.593: w/system.err(6777):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:607) 07-17 15:57:45.603: w/system.err(6777):     @ dalvik.system.nativestart.main(native method) 

a nullpointerexception occurs when scroll , down on devices(android 2.3) quickly,but works fine on emulator , devices version of 4.0, i'm not sure what's going on,wish guys can help.

here main code:

private class detailexpandadapter extends baseexpandablelistadapter{

    private drawable isnull;       public detailexpandadapter(){         isnull = getresources().getdrawable(r.drawable.star);         //调用setcompounddrawables时,必须调用drawable.setbounds()方法,否则图片不显示         isnull.setbounds(0, 0, isnull.getminimumwidth(), isnull.getminimumheight());     }      @override     public int getgroupcount() {         return group.size();     }      @override     public int getchildrencount(int groupposition) {         return child.get(groupposition).size();     }      @override     public object getgroup(int groupposition) {         return group.get(groupposition);     }      @override     public object getchild(int groupposition, int childposition) {         return child.get(groupposition).get(childposition);     }      @override     public long getgroupid(int groupposition) {         return groupposition;     }      @override     public long getchildid(int groupposition, int childposition) {         return groupposition * 100 + childposition;     }      @override     public boolean hasstableids() {         return false;     }      @override     public view getgroupview(int groupposition, boolean isexpanded,             view convertview, viewgroup parent) {         viewholder holder = null;         if(convertview == null){             textview text = new textview(update.this);             text.setgravity(gravity.center_vertical | gravity.left);             text.settextsize(15);             text.settextcolor(color.black);             abslistview.layoutparams lp;             lp = new abslistview.layoutparams(                      viewgroup.layoutparams.fill_parent, objectutils.getfontheight(text.gettextsize()) * 2);             text.setlayoutparams(lp);             text.setbackgroundresource(r.drawable.expanditemgroup);             convertview = text;             holder = new viewholder();             holder.key = (textview)convertview;             convertview.settag(holder);         }else {             holder = (viewholder)convertview.gettag();         }         ((textview)convertview).settext(group.get(groupposition));         holder.key.settext(group.get(groupposition));         return convertview;     }      @override     public view getchildview(final int groupposition, final int childposition,             boolean islastchild, view convertview, viewgroup parent) {         final viewholder holder;         final configitem item=child.get(groupposition).get(childposition);         if(convertview == null ){             holder = new viewholder();             convertview = layoutinflater.from(update.this).inflate(r.layout.queryitem, null);             holder.isused = (checkbox)convertview.findviewbyid(r.id.isused);             holder.key = (textview)convertview.findviewbyid(r.id.key);             holder.edit_value = (edittext)convertview.findviewbyid(r.id.editvalue);             holder.edit_value.setvisibility(view.visible);             holder.text_value = (edittext)convertview.findviewbyid(r.id.textvalue);             holder.btn = (imageview)convertview.findviewbyid(r.id.set);             holder.isused.setvisibility(view.gone);              layoutparams params = holder.key.getlayoutparams();             params.width = update.this.getwindowmanager().getdefaultdisplay().getwidth()/4;             holder.key.setlayoutparams(params);             convertview.settag(holder);         }else{             holder = (viewholder)convertview.gettag();         }          holder.edit_value.clearfocus();         holder.key.settext(item.getcolumndescribe() + ":");         //增加必输项图标         if (!item.isnull()) {             holder.key.setcompounddrawables(isnull, null, null, null);         }else{             holder.key.setcompounddrawables(null, null, null, null);         }          //编辑框监听及赋值         holder.edit_value.setonfocuschangelistener(new onfocuschangelistener() {              @override             public void onfocuschange(view v, boolean hasfocus) {                 if(!hasfocus){                     item.setdisplayvalue(((edittext)v).gettext().tostring());                     item.setvalue(((edittext)v).gettext().tostring());                 }             }         });         if(item.islist()){             holder.edit_value.settext(item.getdisplayvalue());             holder.text_value.settext(item.getdisplayvalue());         }else if(item.getcolumntype().equals("virtualbutton")){             holder.edit_value.settext(item.getcolumndescribe());             holder.text_value.settext(item.getcolumndescribe());         }else{             holder.edit_value.settext(item.getvalue());             holder.text_value.settext(item.getvalue());         }         if(item.getcolumntype().equalsignorecase("number")){             //only number allowed when columntype number             holder.text_value.setinputtype(inputtype.type_class_number);             holder.edit_value.setinputtype(inputtype.type_class_number);             holder.text_value.setsingleline(true);             holder.text_value.setlines(1);             holder.edit_value.setsingleline(true);             holder.edit_value.setlines(1);         } else if(item.getcolumntype().equalsignorecase("textarea")){             holder.text_value.setinputtype(inputtype.type_class_text);             holder.edit_value.setinputtype(inputtype.type_class_text);             holder.text_value.setsingleline(false);             holder.text_value.setminlines(3);             holder.edit_value.setsingleline(false);             holder.edit_value.setminlines(3);         } else{             holder.text_value.setinputtype(inputtype.type_class_text);             holder.edit_value.setinputtype(inputtype.type_class_text);             holder.text_value.setsingleline(true);             holder.text_value.setlines(1);             holder.edit_value.setsingleline(true);             holder.edit_value.setlines(1);         }           if(item.istext()){             holder.btn.setvisibility(view.gone);             //是否可编辑             if(!item.isupdate()){                 holder.text_value.setbackgrounddrawable(getresources().getdrawable(r.drawable.touming));                 holder.text_value.setenabled(false);                 holder.text_value.setfocusable(false);                 holder.text_value.setfocusableintouchmode(false);                 holder.text_value.setvisibility(view.visible);                 holder.edit_value.setvisibility(view.gone);             }else{                 holder.edit_value.setenabled(true);                 holder.edit_value.setfocusable(true);                 holder.edit_value.setfocusableintouchmode(true);                 holder.edit_value.setvisibility(view.visible);                 holder.text_value.setvisibility(view.gone);             }          }else if(item.islist()){        //下拉框             holder.btn.setvisibility(view.visible);             if(!item.isupdate()){                 holder.btn.setvisibility(view.gone);              }else{                 holder.btn.setvisibility(view.visible);              }             holder.edit_value.setvisibility(view.gone);             holder.text_value.setvisibility(view.visible);              holder.btn.setonclicklistener(new view.onclicklistener() {                 @override                 public void onclick(view v) {                     showgroupposition = groupposition;                     showchildposition = childposition;                     intent intent = new intent(update.this, querydict.class);                     intent.putextra("class", constvars.datasource_list_dict);                     intent.putextra("action", constvars.ln_dict_action);                     intent.putextra(constvars.dict_item, item);                     intent.putextra("fromclass", update.this.getcomponentname().getclassname());                     startactivityforresult(intent, 1);                 }             });         }else if (child.get(groupposition).get(childposition).isdate()) {                holder.btn.setvisibility(view.visible);             if(!item.isupdate()){                 holder.btn.setvisibility(view.gone);             }else{                 holder.btn.setvisibility(view.visible);             }              holder.edit_value.setvisibility(view.gone);             holder.text_value.setvisibility(view.visible);              holder.btn.setonclicklistener(new view.onclicklistener() {                 @override                 public void onclick(view v) {                     showgroupposition = groupposition;                     showchildposition = childposition;                     intent intent=new intent(update.this,dtpickerdialog.class);                     intent.putextra("fromclass", update.this.getcomponentname().getclassname());                     update.this.startactivityforresult(intent, 2);                 }             });         }else if(child.get(groupposition).get(childposition).isvitual()){             holder.btn.setvisibility(view.visible);             if(!item.isupdate()){                 holder.btn.setvisibility(view.gone);             }else{                 holder.btn.setvisibility(view.visible);             }             if(child.get(groupposition).get(childposition).getcolumntype().equalsignorecase("virtualbutton")                             && child.get(groupposition).get(childposition).getlinkobject().getfuncname().equals("showfilefield")){                 if(item.getvalue()!=null&&!"".equals(item.getvalue())){                     holder.btn.setvisibility(view.visible);                 }else{                     holder.btn.setvisibility(view.gone);                 }             }              holder.edit_value.setvisibility(view.gone);             holder.text_value.setvisibility(view.visible);             holder.text_value.settext(item.getname());              holder.btn.setonclicklistener(new view.onclicklistener() {                 @override                 public void onclick(view v) {                     if(child.get(groupposition).get(childposition).getcolumntype().equalsignorecase("userpicker")){                         intent intent=new intent(update.this, userselected.class);                         showchildposition=childposition;                         showgroupposition=groupposition;                         intent.putextra(constvars.userchoice_selectuser, item);                         intent.putextra("type", "13"); 

//
startactivityforresult(intent, 10); }else if(child.get(groupposition).get(childposition).getcolumntype().equalsignorecase("virtualbutton") && child.get(groupposition).get(childposition).getlinkobject().getfuncname().equals("showfilefield")){//附件 intent intent=new intent(update.this, attachment.class); intent.putextra("id", item.getvalue());

                        startactivity(intent);                     }                 }             });         }          return convertview;     }     @override     public boolean ischildselectable(int groupposition, int childposition) {         return true;     }  } 

Comments