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.

¿Puede alguien decir si esto es posible hacer en Android y si sí, entonces cómo hacerlo. Gracias por adelantado

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)); 
  • Cambiar progreso / La escala de búsqueda no es lineal (por ejemplo, logarítmica)
  • Cómo hacer que Google Play Store App como el menú de acciones de búsqueda y el diseño del diálogo de búsqueda
  • Android: devuelve la consulta de búsqueda a la actividad actual
  • ¿Cómo utilizar un Seekbar en android como un seekBar, así como un progressBar simultáneamente?
  • Cómo diseñar un SearchView en la barra de acciones de Android
  • Android Market, resultados de la búsqueda posición Misterio
  • Contactos de búsqueda inteligente en android
  • CursorTreeAdapter con implementación de búsqueda
  • Android: Intención de búsqueda no funciona
  • Librería ligera de api de indexación de texto para Android
  • Rellene dos superposiciones de imagen como la barra de búsqueda en el evento táctil de la vista de imagen
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.