Autore Topic: come fare una Search stile ricerca Contatti in rubrica?  (Letto 640 volte)

Offline ozzem

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
come fare una Search stile ricerca Contatti in rubrica?
« il: 16 Novembre 2011, 17:15:56 CET »
0
salve, ho una List di HashMap e vorrei poter fare una search in stile Rubrica di Android..per capirci che scremi la lista man mano che inserisco le lettere ad esempio del nome della persona fino a far rimanere una sola riga (o più in caso di omonimia) con il valore corrispondente alla ricerca.
spero di essere stato chiaro.

grazie in anticipo

Offline ale88sv

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +1
    • Google+
    • Mostra profilo
    • Le Mie Apps
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    ale88sv
  • Sistema operativo:
    Windows 7 / Ubuntu 12.4
Re:come fare una Search stile ricerca Contatti in rubrica?
« Risposta #1 il: 22 Novembre 2011, 17:24:43 CET »
0
Ciao, immagino che usi una edittext, se si potresti fare che ad ogni cambiamento aggiorni la lista con gli elementi della tua hashmap che iniziano con edittext.getstring()  ... se vuoi che sia un po' più preciso posta un pò di codice  ;-)

Offline ozzem

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
Re:come fare una Search stile ricerca Contatti in rubrica?
« Risposta #2 il: 22 Novembre 2011, 17:34:31 CET »
0
Si guarda, ho trovato una soluzione che funziona parzialmente in quanto funziona se inserisco solo il nome o il cognome, appena inserisco lo "spazio" non mi da più alcun contenuto..ti posto parte del codice sull'adapter utilizzato ed il textwatcher..
mi sapresti dire il perchè di questo funzionamento  e magari come posso risolvere?


Codice (Java): [Seleziona]
filterText = (EditText)findViewById(R.building_list.search_box);
               
               
                 filterText.addTextChangedListener(filterTextWatcher);


.........................


SimpleAdapter adapter=new CustomAdapter( //semplice adapter per i cursor
                                        this,
                                        fillMaps,
                                        R.layout.birthlist2, //il layout di ogni riga/prodotto
                                        new String[]{"uid", "id","name","birthday","days"},//questi colonne
                                        new int[]{R.id.uidFld, R.id.idFld, R.id.toptext2,R.id.bottomtext2, R.id.daystext2});//in queste views

                        personLv.setAdapter(adapter); //la listview ha questo adapter
                        pd.dismiss();
                        ad=adapter;


..........

public class CustomAdapter extends SimpleAdapter{
                List<? extends Map<String, String>> data;

                public CustomAdapter(Context context,
                                List<? extends Map<String, String>> data, int resource,
                                                String[] from, int[] to) {
                        super(context, data, resource, from, to);
                        this.data = data;
                }
........



private TextWatcher filterTextWatcher = new TextWatcher() {

            public void afterTextChanged(Editable s) {
            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
             
               
                ad.getFilter().filter(s);
               
            }

        };

        @Override
        protected void onDestroy() {
            super.onDestroy();
            filterText.removeTextChangedListener(filterTextWatcher);
        }