android - AutoCompletetextview custom adapter issue -
i have 1 autocomplete text view display firm name sq-lite database. database records came there no issue.but issue adapter .adapter not clear first search , suggestion display remove , again type , there no suggestion in database adapter display old suggestion search in last. below put images identify whats problem
1:
public class topuptransfer extends baseactivity{ autocompletetextview memberview; arraylist <string> name = null,name1= null; button btnsubmit; string membercode2,amount; edittext amnt,smspin;; hashmap<string,string> memberdetail; autocompleteadapter2 adapter; databasehelper db; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.topuptransfer); if(!(thread.getdefaultuncaughtexceptionhandler() instanceof exceptionhandler)) { thread.setdefaultuncaughtexceptionhandler(new exceptionhandler(this)); } /*actionbar actionbar = getsupportactionbar(); assert actionbar != null; actionbar.setdisplayhomeasupenabled(true); actionbar.sethomeasupindicator(r.drawable.back);*/ db = new databasehelper(topuptransfer.this); memberview = (autocompletetextview) findviewbyid(r.id.autocompletetextview1); name = new arraylist<string>(); name1 = new arraylist<string>(); memberdetail = new hashmap<string,string>(); amnt = (edittext) findviewbyid(r.id.topup_amnt); btnsubmit = (button) findviewbyid(r.id.button); smspin = (edittext) findviewbyid(r.id.smspin); edittext mobileno = (edittext) findviewbyid(r.id.mobileno); mobileno.settext(responsestring.getmobno()); if(responsestring.getrequiredsmspin().equals("true")) { smspin.setvisibility(view.visible); } else { smspin.setvisibility(view.invisible); } memberview.addtextchangedlistener(new textwatcher() { @override public void beforetextchanged(charsequence s, int start, int count, int after) { } @override public void ontextchanged(charsequence s, int start, int before, int count) { string text = s.tostring(); log.d("text", "" + text); //adapter.clear(); int len = text.length(); if (memberview != null) { if( len >= 3) { log.d("text", "" + text); try { if(name1 != null){name1.clear();} name1 = getlist(text); log.d("name1", "" + name1.size()); if(responsestring.getstcode().equals("0")) { if (name1.size() != 0) { log.d("adpter list", name1.tostring()); //adapter = new autocompleteadapter(topuptransfer.this, r.layout.listview_raw,r.id.desc, name1); adapter = new autocompleteadapter2(topuptransfer.this,r.id.desc, name1); memberview.setadapter(adapter); } } else { toast.maketext(topuptransfer.this, "" + baseactivity.smsg, toast.length_short).show(); } }catch(exception e){ thread.setdefaultuncaughtexceptionhandler(new exceptionhandler(topuptransfer.this)); //throw new runtimeexception("check in topup transfer"); } } } } @override public void aftertextchanged(editable s) { } }); btnsubmit.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { if(responsestring.getrequiredsmspin().equals("true")) { string sms = smspin.gettext().tostring(); string rs = responsestring.getsmspwd(); if (sms.length() == 0) { toastvalidationmessage(topuptransfer.this, getresources().getstring(r.string.plsentersmspin)); smspin.requestfocus(); } else if (!sms.equals(rs)) { toastvalidationmessage(topuptransfer.this, getresources().getstring(r.string.pinentercorrect)); } } if (memberview.gettext().tostring().length() == 0) { toastvalidationmessage(topuptransfer.this, getresources().getstring(r.string.plsenterfirm)); memberview.requestfocus(); return; }else if (amnt.gettext().tostring().length() == 0) { toastvalidationmessage(topuptransfer.this, getresources().getstring(r.string.plsenteramnt)); amnt.requestfocus(); return; } string dpattern = memberview.gettext().tostring(); membercode2 = baseactivity.detailmember.get(dpattern); amount = amnt.gettext().tostring(); log.d("membercode",""+ membercode2); log.d("amount", "" + amount); try { if (membercode2.equals(null)) { toast.maketext(topuptransfer.this, "firm name not valid", toast.length_short).show(); } else { boolean con = isinternetconnected(); if (con) { asynctaskcommon asy = new asynctaskcommon(topuptransfer.this, membercode2, amount); stcode = asy.execute("topuptransfer").get(); /*int = 0; //baseactivity.showprogressdialog(loginactivity.this); while (!baseactivity.baseresponse) { i++; }*/ if(stcode.equals("0")) { alertdialog.builder builder = new alertdialog.builder(topuptransfer.this); builder.settitle(r.string.app_name); builder.setmessage(baseactivity.smsg); builder.setpositivebutton("ok", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int id) { baseactivity.smsg = ""; finish(); intent m = new intent(topuptransfer.this,topuptransfer.class); overridependingtransition(r.anim.pull_in_right, r.anim.push_out_left); startactivity(m); } }); builder.show(); } else { toastvalidationmessage(topuptransfer.this, smsg); } } else { toast.maketext(topuptransfer.this, "check internet connection", toast.length_short).show(); } } }catch (exception e) { thread.setdefaultuncaughtexceptionhandler(new exceptionhandler(topuptransfer.this)); } } }); } public boolean oncreateoptionsmenu(menu menu) { menuinflater inflater = getmenuinflater(); inflater.inflate(r.menu.menu_main, menu); return true; } public boolean onoptionsitemselected(menuitem item) { switch (item.getitemid()) { case r.id.action_signout: logout(topuptransfer.this); default: return super.onoptionsitemselected(item); } } arraylist<string> getlist(string text) { arraylist<string> arraylisttemp = new arraylist<string>(); cursor cursor = db.gettimerecordlist(text, "childuserinfo"); if (cursor != null){ if (cursor.movetofirst()) { { arraylisttemp.add(cursor.getstring(cursor.getcolumnindex("firmname")));// added table value database } while (cursor.movetonext()); } } return arraylisttemp; } @override public boolean onkeydown(int keycode, keyevent event) { if(keycode == keyevent.keycode_back) { doexit(); } return super.onkeydown(keycode, event); } private void doexit() { finish(); intent intent = new intent(topuptransfer.this,homepage.class); startactivity(intent); } }
for adapter class autocompleteadapter.java
public class autocompleteadapter extends arrayadapter<string> implements filterable { private arraylist<string> fulllist = null; private arraylist<string> moriginalvalues= null; private arrayfilter mfilter = null; public autocompleteadapter(context context, int resource,int textviewresourceid, arraylist<string> fulllist) { super(context, resource, textviewresourceid, fulllist); this.fulllist = fulllist; moriginalvalues = new arraylist<string>(fulllist); } @override public int getcount() { return fulllist.size(); } @override public string getitem(int position) { return fulllist.get(position); } @override public view getview(int position, view convertview, viewgroup parent) { return super.getview(position, convertview, parent); } @override public filter getfilter() { if (mfilter == null) { mfilter = new arrayfilter(); } return mfilter; } private class arrayfilter extends filter { private object lock; @override protected filterresults performfiltering(charsequence prefix) { filterresults results = new filterresults(); if (moriginalvalues == null) { synchronized (lock) { moriginalvalues = new arraylist<string>(fulllist); } } arraylist<string> queryresults; if (prefix != null && prefix.length() >= 3 && moriginalvalues != null) { queryresults = autocomplete(prefix.tostring()); } else { queryresults = new arraylist<string>(); // empty list/no suggestions showing if there's no valid constraint } results.values = queryresults; log.d("results2",""+results.values); results.count = queryresults.size(); log.d("results count2 ",""+results.count); return results; } private arraylist<string> autocomplete(string input) { arraylist<string> queryresults = new arraylist<string>(); if(moriginalvalues != null) { arraylist<string> values = moriginalvalues; int count = values.size(); if (count >= 1) { (int = 0; < count; i++) { string item = values.get(i); queryresults.add(item); } } } return queryresults; } @suppresswarnings("unchecked") @override protected void publishresults(charsequence constraint,filterresults results) { if (results.values != null) { log.d("results",""+results.values); fulllist = (arraylist<string>) results.values; log.d("fullist",""+fulllist.tostring()); } else { fulllist = new arraylist<string>(); } if (results.count > 0) { log.d("result count", "" + results.count); notifydatasetchanged(); } else { notifydatasetinvalidated(); } } } }
you have use notifydatasetchanged after updating adapter populate new data
if(responsestring.getstcode().equals("0")) { if (name1.size() != 0) { log.d("adpter list", name1.tostring()); //adapter = new autocompleteadapter(topuptransfer.this, r.layout.listview_raw,r.id.desc, name1); adapter = new autocompleteadapter2(topuptransfer.this,r.id.desc, name1); memberview.setadapter(adapter); adapter.notifydatasetchanged(): } }
Comments
Post a Comment