android - search in an listview using a Searchview on the action bar -


i have activity list clients on listview sql server database, , i've had implement searchview.. dont know how implement query search client names listview.. can me??

here code activity list:

package com.example.hp13_b200.testedesign;  import android.app.listactivity; import android.app.progressdialog; import android.app.searchmanager; import android.content.context; import android.content.intent; import android.os.asynctask; import android.support.v7.app.actionbaractivity; import android.os.bundle;  import android.support.v7.widget.searchview; import android.util.log; import android.view.menu; import android.view.menuinflater; import android.view.menuitem; import android.view.view;  import android.widget.linearlayout; import android.widget.listadapter; import android.widget.listview;  import android.widget.simpleadapter; import android.widget.textview;  import org.apache.http.namevaluepair; import org.json.jsonarray; import org.json.jsonexception; import org.json.jsonobject;  import java.util.arraylist; import java.util.hashmap; import java.util.list;    public class listar_clientes extends actionbaractivity {     private listview list;     private textview nome, abv, esaldo, telefone, mail, morada;     private searchview search;      private progressdialog pdialog;       @override     public boolean oncreateoptionsmenu(menu menu) {          menuinflater inflater = getmenuinflater();         inflater.inflate(r.menu.menu_listar_clientes, menu);          // associate searchable configuration searchview         searchmanager searchmanager =                 (searchmanager) getsystemservice(context.search_service);         searchview searchview =                 (searchview) menu.finditem(r.id.search).getactionview();         searchview.setsearchableinfo(                 searchmanager.getsearchableinfo(getcomponentname()));          return true;           // associate searchable configuration searchview       }             // creating json parser object     jsonparser jparser = new jsonparser();      arraylist<hashmap<string, string>> productslist;      // url products list     private static string url_all_products = "http://ciemarco.dyndns.org:90/androidapp/listar_clientes.php";      // json node names      private static final string tag_cliente= "clientes";     private static final string tag_nome = "nome";     private static final string tag_abv = "nome2";     private static final string tag_saldo = "esaldo";     private static final string tag_telefone = "telefone";     private static final string tag_morada = "morada";     private static final string tag_mail = "email";         // products jsonarray     jsonarray products = null;        @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_listar_clientes);          // intent, verify action , query         intent intent = getintent();         /*if (intent.action_search.equals(intent.getaction())) {             string query = intent.getstringextra(searchmanager.query);             domysearch(query);         }*/           nome = (textview)findviewbyid(r.id.name);         abv = (textview)findviewbyid(r.id.abv);         telefone = (textview)findviewbyid(r.id.telefone);         morada = (textview)findviewbyid(r.id.morada);         mail = (textview)findviewbyid(r.id.mail);         esaldo = (textview)findviewbyid(r.id.esaldo);         list = (listview)findviewbyid(android.r.id.list);          // hashmap listview         productslist = new arraylist<hashmap<string, string>>();          // loading products in background thread         new loadallproducts().execute();         //  log.v("count-->",productslist.get(0).tostring());         // listview       /*   list.setonitemclicklistener(new adapterview.onitemclicklistener() {             @override             public void onitemclick(adapterview<?> parent, view view, int position, long id) {                 // getting values selected listitem                  string nome = ((textview) view.findviewbyid(r.id.name)).gettext()                         .tostring();                 log.d("cod_conta: ", ""+nome);                 // starting new intent                 intent in = new intent(listar_clientes.this,                         detalhes_cliente.class);                 // sending pid next activity                  in.putextra(tag_nome, nome);                 //in.putextra(tag_abv, abv);                  log.d("entrou: ", "vai entrar");                 //startactivityforresult(in,100);                  // starting new activity , expecting response                 startactivity(in);             }           } );*/           // launching edit product screen //        lv.setonitemclicklistener(new adapterview.onitemclicklistener() { // // //                // starting new intent //                intent in = new intent(getapplicationcontext(), //                        list_item.class); //                // sending pid next activity //                in.putextra(tag_pid, pid); // //                // starting new activity , expecting response //                startactivityforresult(in, 100); //            } //        });        /*  listadapter adapter = new simpleadapter(                 encomendas_user.this, productslist,                 r.layout.activity_list_item, new string[] { tag_iduser,                 tag_titulo},                 new int[] { r.id.pid, r.id.name });         // updating listview         setlistadapter(adapter);*/         // on seleting single product         // launching edit product screen      }      // response edit product activity     @override     protected void onactivityresult(int requestcode, int resultcode, intent data) {         super.onactivityresult(requestcode, resultcode, data);         // if result code 100         if (resultcode == 100) {             // if result code 100 received             // means user edited/deleted product             // reload screen again             intent intent = getintent();             finish();             startactivity(intent);         }      }        /**      * background async task load product making http request      * */     class loadallproducts extends asynctask<string, string, string> {          /**          * before starting background thread show progress dialog          * */         @override         protected void onpreexecute() {             super.onpreexecute();             pdialog = new progressdialog(listar_clientes.this);             pdialog.setmessage("a carregar dados. por favor aguarde...");             pdialog.setindeterminate(false);             pdialog.setcancelable(false);             pdialog.show();         }          /**          * getting products url          * */         protected string doinbackground(string... args) {             // building parameters             list<namevaluepair> params = new arraylist<namevaluepair>();              // getting json string url             jsonobject json = jparser.makehttprequest(url_all_products, "get", params);              // check log cat json reponse             log.d("all products: ", json.tostring());              try {                 // checking success tag                 //  int success = json.getint(tag_iduser);                 //log.d("namsuccesse: ", ""+success);                 //if (success == 1) {                 // products found                 // getting array of products                 products = json.getjsonarray(tag_cliente);                  // looping through products                 (int = 0; < products.length(); i++) {                     jsonobject c = products.getjsonobject(i);                       // storing each json item in variable                     string name = c.getstring(tag_nome);                     string abv = c.getstring(tag_abv);                     string telefone = c.getstring(tag_telefone);                     string morada = c.getstring(tag_morada);                     string mail = c.getstring(tag_mail);                     string esaldo = c.getstring(tag_saldo);                        log.d("name teste: ", name);                     // creating new hashmap                     hashmap<string, string> map = new hashmap<string, string>();                      // adding each child node hashmap key => value                     map.put(tag_nome, name);                     map.put(tag_abv,  abv);                     map.put(tag_telefone, telefone);                     map.put(tag_morada, morada);                     map.put(tag_mail, mail);                     map.put(tag_saldo, esaldo);                       // if(userinfo.userid==(integer.parseint(name))){                         // adding hashlist arraylist                     productslist.add(map);                    // }                   }               /*  } else {                     // no products found                     // launch add new product activity                     //intent = new intent(getapplicationcontext(),                            // newproductactivity.class);                     // closing previous activities                     //i.addflags(intent.flag_activity_clear_top);                    // startactivity(i);                 }*/             } catch (jsonexception e) {                 e.printstacktrace();             }              return null;         }          /**          * after completing background task dismiss progress dialog          * **/         protected void onpostexecute(string file_url) {             // dismiss dialog after getting products             pdialog.dismiss();             // updating ui background thread             runonuithread(new runnable() {                 public void run() {                     /**                      * updating parsed json data listview                      * */                      listadapter adapter = new simpleadapter(                             listar_clientes.this, productslist,                             r.layout.activity_list_item_clientes, new string[]{tag_nome, tag_mail, tag_telefone, tag_morada, tag_saldo},                             new int[]{r.id.name, r.id.mail, r.id.telefone, r.id.morada, r.id.esaldo});                     // updating listview                     list.setadapter(adapter);                    }             });          }            }      public void  listar(view v){         linearlayout vwparentrow = (linearlayout)v.getparent();          textview nome=(textview)vwparentrow.getchildat(1);          textview telefone=(textview)vwparentrow.getchildat(4);         textview morada=(textview)vwparentrow.getchildat(3);         textview mail=(textview)vwparentrow.getchildat(5);         textview esaldo=(textview)vwparentrow.getchildat(6);            // starting new intent         intent in = new intent(getapplicationcontext(),                 detalhes_cliente.class);         // sending pid next activity         in.putextra(tag_nome, nome.gettext().tostring());          in.putextra(tag_telefone, telefone.gettext().tostring());         in.putextra(tag_morada, morada.gettext().tostring());         in.putextra(tag_mail, mail.gettext().tostring());         in.putextra(tag_saldo, esaldo.gettext().tostring());           // starting new activity , expecting response         startactivityforresult(in, 100);     }         @override     public boolean onoptionsitemselected(menuitem item) {         // handle action bar item clicks here. action bar         // automatically handle clicks on home/up button, long         // specify parent activity in androidmanifest.xml.         int id = item.getitemid();          //noinspection simplifiableifstatement         if (id == r.id.action_settings) {             return true;         }          return super.onoptionsitemselected(item);     }      @override     public boolean onprepareoptionsmenu(menu menu) {         menuitem item= menu.finditem(r.id.action_settings);         item.setvisible(false);         super.onprepareoptionsmenu(menu);         return true;     } } 

and here code searchresultactivity:

package com.example.hp13_b200.testedesign;  import android.app.searchmanager; import android.content.intent; import android.support.v7.app.actionbaractivity; import android.os.bundle; import android.view.menu; import android.view.menuitem;   public class searchresultsactivity extends actionbaractivity {      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_search_results);         handleintent(getintent());      }     @override     protected void onnewintent(intent intent) {          handleintent(intent);     }     private void handleintent(intent intent) {          if (intent.action_search.equals(intent.getaction())) {             string query = intent.getstringextra(searchmanager.query);             //use query search data somehow         }     }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.menu_search_results, menu);         return true;     }      @override     public boolean onoptionsitemselected(menuitem item) {         // handle action bar item clicks here. action bar         // automatically handle clicks on home/up button, long         // specify parent activity in androidmanifest.xml.         int id = item.getitemid();          //noinspection simplifiableifstatement         if (id == r.id.action_settings) {             return true;         }          return super.onoptionsitemselected(item);     } } 

regarding model-view-controller approach, need create model data matches search , hand tho view (your list view) display it.


Comments