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.
- Actividad de búsqueda que se llama dos veces
- Múltiples actividades de búsqueda con sugerencias
- Cómo buscar archivos en el teléfono sdcard o donde
- Lista de búsqueda de Android al escribir
- Cómo realizar T9 Búsqueda de contactos por número en Android
¿Puede alguien decir si esto es posible hacer en Android y si sí, entonces cómo hacerlo. Gracias por adelantado
- ¿Cómo agregar la opción de búsqueda en la aplicación Android?
- Desactivación de SearchView
- Android Seekbar no puede eliminar el relleno / fondo
- ¿Cómo integrar la actividad de búsqueda con la búsqueda de voz de Google Ok?
- Palabra árabe Buscando en el archivo de texto en árabe
- Global "función de búsqueda" en la aplicación completa
- Cómo hacer que SeekBar ocupe todo el ancho de los padres
- Barra de búsqueda o barra de progreso con varios colores
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?