android - How to add search function to Lazy loading listview -
i using http request data in json format loads image well.
i trying implement ontextchanged function crashes whenever enter alphabet edittext box.
/** asynctask parse json data , load listview */ private class listviewloadertask extends asynctask<string, void, simpleadapter>{ jsonobject jobject; // doing parsing of xml data in non-ui thread @override protected simpleadapter doinbackground(string... strjson) { try{ jobject = new jsonobject(strjson[0]); storejsonparser countryjsonparser = new storejsonparser(); countryjsonparser.parse(jobject); }catch(exception e){ log.d("json exception1",e.tostring()); } // instantiating json parser class storejsonparser countryjsonparser = new storejsonparser(); // list object store parsed countries list list<hashmap<string, object>> countries = null; try{ // getting parsed data list construct countries = countryjsonparser.parse(jobject); }catch(exception e){ log.d("exception",e.tostring()); } // keys used in hashmap string[] = { "country","flag","details"}; // ids of views in listview_layout int[] = { r.id.storename,r.id.icon,r.id.details}; // instantiating adapter store each items // r.layout.listview_layout defines layout of each item adapter = new simpleadapter(getbasecontext(), countries, r.layout.restaurant_list, from, to); log.d("what adapter ?", string.valueof(adapter)); return adapter; } and on postexecute implement ontextchanged function.
protected void onpostexecute(simpleadapter adapter) { // setting adapter listview mlistview.setadapter(adapter); searchbox.addtextchangedlistener(new textwatcher() { public void ontextchanged(charsequence cs, int arg1, int arg2, int arg3) { // when user changed text choosecategory.this.adapter.getfilter().filter(cs); } public void beforetextchanged(charsequence arg0, int arg1, int arg2, int arg3) { // todo auto-generated method stub } public void aftertextchanged(editable arg0) { // todo auto-generated method stub //choosecategory.this.adapter.getfilter().filter(arg0); } }); for(int i=0;i<adapter.getcount();i++){ hashmap<string, object> hm = (hashmap<string, object>) adapter.getitem(i); string imgurl = (string) hm.get("flag_path"); imageloadertask imageloadertask = new imageloadertask(); hashmap<string, object> hmdownload = new hashmap<string, object>(); hm.put("flag_path",imgurl); hm.put("position", i); // starting imageloadertask download , populate image in listview imageloadertask.execute(hm); } } i have tried doing log.d on countries variable, shows correct json data. error got logcat
java.lang.nullpointerexception @ android.widget.simpleadapter.getcount(simpleadapter.java:93) @ android.widget.adapterview.checkfocus(adapterview.java:713) @ android.widget.adapterview$adapterdatasetobserver.oninvalidated(adapterview.java:836) @ android.widget.abslistview$adapterdatasetobserver.oninvalidated(abslistview.java:6288) @ android.database.datasetobservable.notifyinvalidated(datasetobservable.java:50) @ android.widget.baseadapter.notifydatasetinvalidated(baseadapter.java:59) @ android.widget.simpleadapter$simplefilter.publishresults(simpleadapter.java:383) @ android.widget.filter$resultshandler.handlemessage(filter.java:282) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:136) @ android.app.activitythread.main(activitythread.java:5017) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) @ dalvik.system.nativestart.main(native method) thanks in advance!
Comments
Post a Comment