Cómo usar la funcionalidad de búsqueda en la vista de lista personalizada en Android



Answers

para esto, primero necesitas agregar un texto de edición, donde escribirás para filtrar los datos de la lista,

luego habilite la filtración en la lista,

editText = (EditText) findViewById(R.id.searchList);
 adapter = new CustomListViewAdapter(this,
                R.layout.list_row, rowItems);
        listView.setAdapter(adapter);
        listView.setTextFilterEnabled(true);

Entonces necesitas agregar TextChangeListener() para el texto de edición,

editText.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {

            }

            public void beforeTextChanged(CharSequence arg0, int arg1,
                    int arg2, int arg3) {

            }

            public void afterTextChanged(Editable arg0) {
                MyActivityName.this.adapter.getFilter().filter(arg0);

            }
        });
Question

He creado una vista de lista con varios elementos en fila. También he creado un cuadro de búsqueda arriba. Quiero implementar la funcionalidad de búsqueda sobre la base de campos particulares de la lista. ¿Cómo puedo conseguir esto? Cualquier ayuda será apreciada.




Puede establecer un TextWatcher para su cuadro de búsqueda y cambiar su Cursor onTextChanged () en TextWatcher como los Códigos a continuación:

TextWatcher filterNameTextWatcher = new TextWatcher()
 public void beforeTextChanged(CharSequence s, int start, int count,int after)
        {
        }

        public void onTextChanged(CharSequence s,int start, int before,int count) 
        {
            Cursor FilteredNameList = ZoneCardDBAdapter.instance.CursorFilteredName(s.toString());
            Listadapter.changeCursor(FilteredNameList);


        }

        @Override
        public void afterTextChanged(Editable arg0) 
        {   
        }
    };

EditText filterTextName = (EditText)this.findViewById(R.id.edtZoneCardNameFilter);
filterTextCPName.addTextChangedListener(filterNameTextWatcher);





Links