En Android cómo cambiar el color de una letra / carácter en particular que se está buscando dentro de la lista
Tengo un ListView que contiene ciertos elementos y he colocado un EditText
encima de la lista para proporcionar la función de Search
para el usuario, significa, escribiendo dentro del EditText
y haciendo clic en cualquier botón, etc, el usuario puede buscar si determinado elemento está presente en la lista o no.
Ahora lo que quiero es que: si las letras / caracteres mecanografiados por el usuario están presentes dentro de cualquier elemento de lista, entonces those letters only
se cambian en ROJO o AZUL o cualquier otro color. Por ejemplo, tengo una lista de frutas y estoy buscando Apple
, por lo que cuando empiezo a escribir app … le, entonces el color de sólo los caracteres que se escriben por el usuario, la app
(en este caso), debe ser cambiado A ROJO, AZUL o cualquier otro color si el artículo Apple
está presente en la lista.
- Detección de la posición del pulgar en SeekBar antes de la versión 16 de la API
- Librería ligera de api de indexación de texto para Android
- Obtenga los datos de contacto de la identificación de contacto en Android
- Mejores Prácticas para el Manejo de la Búsqueda
- Global "función de búsqueda" en la aplicación completa
¿Puede alguien decir si esto es posible hacer en Android y si sí, entonces cómo hacerlo. Gracias por adelantado
- Inicie la consulta de búsqueda de Google desde la actividad - Android
- Barra de búsqueda personalizada tiene una brecha entre el pulgar y el progreso
- Cómo restablecer una búsqueda utilizando android SearchManager
- Android: obtener el historial de búsqueda de google?
- ¿Cómo funciona la búsqueda de Google?
- ¿Cómo agregar una lista desplegable al lado del campo de búsqueda en Android?
- Búsqueda asistida por Android: El botón de búsqueda no invoca la actividad que se puede buscar (Otras soluciones no ayudaron)
- Desactivación de SearchView
La forma más sencilla de hacerlo es registrar un TextChangedListener:
editText.addTextChangedListener(new TextWatcher(){ public void afterTextChanged(Editable s) { //retrieve the typed text lecter ad char array something like typedChar[] //Here parsing the List and modify the lecter } public void beforeTextChanged(CharSequence s, int start, int count, int after){} public void onTextChanged(CharSequence s, int start, int before, int count){} });
Entonces debemos recargar el ListView, podemos usar notifyDataSetChanged () en el adaptador (algo debe cambiar al evento de fuego)
myListViewAdapter.notifyDataSetChanged()
Finalmente en el adaptador:
public class CustomAdapterOptimize extends ArrayAdapter<Contatto> { public CustomAdapterOptimize(Context context, int textViewResourceId, List<Contatto> objects) { super(context, textViewResourceId, objects); } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView tx = (TextView)convertView; SpannableString text = getItem(position); for(char:typedChar) if(tx.getText().contains(char)){ // make "text" (characters pos-1 to pos) red text.setSpan(new ForegroundColorSpan(Color.RED), tx.getText().indexOf(char) - 1, tx.getText().indexOf(char), 0); textView.setText(text, BufferType.SPANNABLE); } } }
Tenga en cuenta que este código debe ajustarse para el rendimiento y la lógica, pero esto puede ser un buen arranque.
Considere mi mano corta Ejemplo para hacer esto:
textView = (TextView)findViewById(R.id.text); SpannableString spantext = new SpannableString("Nitesh Tiwari"); spantext.setSpan(new ForegroundColorSpan(Color.BLUE), 0, 6, 0); //This Will Print Nitesh In Blue Color spantext.setSpan(new RelativeSizeSpan(1.0f), 7, 12, 0); // This will print "Tiwari" 1x bigger than the remaining Figure textView.setText(spantext, BufferType.SPANNABLE);
Espero que esto podría ayudar …
Tal vez, puede utilizar algo como esto:
styledtext="This is <font color='red'>simple</font>."; editText.setText(Html.fromHtml(styledText));
- Android Emulator informa de 600×1024 MDPI como XLarge?
- ¿Qué es "Recursos" en el constructor BitmapDrawable realmente?