i have lists of color variations of product in listview . each list color variation has edittext. want try make validation process orders when button clicked.
this code:
btnorder.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { int count = listview.getadapter().getcount(); string[] listdata = new string[count]; int[] listdata2 = new int[count]; int sum = 0; try { (int = 0; < count; i++) { view quantity=listview.getchildat(i); if (quantity.findviewbyid(r.id.quantityorder) != null){ edittext quantityorder = (edittext) quantity.findviewbyid(r.id.quantityorder); listdata[i] = quantityorder.gettext().tostring(); listdata2[i] = integer.parseint(quantityorder.gettext().tostring()); // set edittext int sum += listdata2[i]; jsonobject.put("params_"+i,listdata[i]); // put params volley request } } if (sum < 1) {toast.maketext(getapplicationcontext(), "sorry, need fill order quantity", toast.length_short) // validation input if edittext empty .show();} else { log.d(tag, jsonobject.tostring()); } } catch (jsonexception e) { e.printstacktrace(); } } });
my app force close. here error code
09-25 23:01:05.679 32623-32623/id.nijushop.ikutan e/androidruntime﹕ fatal exception: main java.lang.numberformatexception: invalid int: "" @ java.lang.integer.invalidint(integer.java:138) @ java.lang.integer.parseint(integer.java:359) @ java.lang.integer.parseint(integer.java:332) @ id.nijushop.ikutan.productdetail$1.onclick(productdetail.java:150) @ android.view.view.performclick(view.java:4084) @ android.view.view$performclick.run(view.java:16966) @ android.os.handler.handlecallback(handler.java:615) @ android.os.handler.dispatchmessage(handler.java:92) @ android.os.looper.loop(looper.java:137) @ android.app.activitythread.main(activitythread.java:4745) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:786) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553) @ dalvik.system.nativestart.main(native method)
please, 1 fix code...i think need
quantity.findviewbyid(r.id.quantityorder)// need set interger
the problem in line:
listdata2[i] = integer.parseint(quantityorder.gettext().tostring()); // set edittext int
the integer.parseint(string string)
method return int or throw numberformatexception
if passed string not valid integer string. empty string - ""
doesn't make valid integer, if edittext
empty, problem arises.
you need shield execution of parseint
try - catch block catching numberformatexception
, act accordingly - abort method or else, cannot continue arithmetic if haven't provided valid number.
also, thing is, within edittext
element in xml file, include inputtype
property, example:
<edittext android:layout_width="match_parent" android:layout_height="wrap_content" android:inputtype="number|numbersigned" />
this inputtype
property cause system use automatic inputfilter , provideonly numeric soft keyboard, user cannot enter invalid number (in case, signed integer). still not account empty input, you'll need either catch numberformatexception
or check whether string edittext not empty. (!string.isempty()
)
Comments
Post a Comment