In questo breve tutorial realizzeremo una piccola activity per la ricerca di contenuti, memorizzati in un file xml, da inserire nelle nostre applicazioni.Ultimamente ho avuto la necessità di realizzare un’activity di ricerca.. Ho cercato un pò in giro per il web ma le guide a disposizione mi sono parse troppo fumose e non rispondevano alle mie esigenze e quindi…ho scritto una activity che consente di effettuare una ricerca.
La situazione di riferimento è la seguente: abbiamo un file xml molto grande (posizionato in values del nostro progetto eclipse) ed abbiamo la necessità di effettuare una ricerca, in base al contenuto scritto dall’utente.
Di seguito posto il codice che si occupa della ricerca, con qualche comento.
EditText search= (ImageView) findViewById(R.id.seachText); //editText di ricerca ImageView imgSearch = (ImageView) findViewById(R.id.imageView1); //immagine "start ricerca" imgSearch.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String searchString = search.getText().toString(); //se clicco, prendo il contenuto della EditText searchString = search.toLowerCase(); for (int j=1; j<xml.length(); j++){ int itemId = getResources().getIdentifier("item"+Integer.toString(j), "string",getPackageName()); //prendo l'id di ogni item String name = getResources().getString(itemId).toLowerCase(); //prendo il contenuto dell'item if (name.contains(searchString)){ //verifico se è presente la parola cercata Intent intent = new Intent(getApplicationContext(), act.class); //se trovo la parola cercata, intent.putExtra("start", j); //richiamo la stessa act e gli passo l'indice j trovato finish(); startActivity(intent); break; } if (j == xml.length()) //se non trovo la parola, visualizzo un messaggio Toast.makeText(v.getContext(), getString(R.string.notFound), Toast.LENGTH_SHORT).show(); } } });
Vi posto anche un pezzo di XML per farvi capire il motivo dell’istruzione
int itemId = getResources().getIdentifier("item"+Integer.toString(j) ,"string",getPackageName());
Ecco l’XML
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="item1">Airone</string> <string name="item2">Albatro</string> <string name="item3">Alce</string> ... ... </resources>
A questo punto, trovato l’indice, mi organizzo il layout per come serve a me.
Spero di esservi stato utile!!
Alla prossima