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)); 
  • ¿Cómo implementar autocompletar la vista de búsqueda en la barra de acción mediante la solicitud http?
  • ¿Cómo puedo devolver un registro basado sólo en una coincidencia parcial de ese registro?
  • Establecer el color del botón Clear de SearchView
  • Personalizar seeekbar enpoints
  • Cómo realizar T9 Búsqueda de contactos por número en Android
  • Agregue un filtro de búsqueda en RecyclerView con tarjetas?
  • Barra de búsqueda personalizada tiene una brecha entre el pulgar y el progreso
  • ¿Son posibles varias clases SearchRecentSuggestionsProvider en la aplicación de Android?
  • Android: Proporcionar autosugestión automática en android coloca Api?
  • Android: onSeekCompleteListener con VideoView
  • ¿Cómo implementar un cuadro de diálogo con un cuadro de búsqueda?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.