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

this image write output

this wrong output

1:enter image description here

enter image description here here code topuptransfer.java

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

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -