Cómo cambiar el color del texto del elemento simple de la lista

Tengo una ListActivity y estoy mostrando una lista con:

setListAdapter(new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_single_choice, mStringList)); 

Por defecto, el color del texto de los elementos de la lista es blanco, quiero cambiar el color del texto de las vistas de texto en la lista a negro.

¿Cómo debería hacerlo?

Otra forma más sencilla es crear un archivo de diseño que contenga la vista de texto que desee con textSize, textStyle, color, etc., que usted prefiera y luego usar con ArrayAdapter.

por ejemplo, mytextview.xml

 < ?xml version="1.0" encoding="utf-8"?>  

y luego úsalo con tu ArrayAdapter como siempre

 ListView lst = new ListView(context); String[] arr = {"Item 1","Item 2"}; ArrayAdapter ad = new ArrayAdapter(context,R.layout.mytextview,arr); lst.setAdapter(ad); 

De esta forma, no necesitará crear un adaptador personalizado para él.

Me doy cuenta de que esta pregunta es un poco antigua, pero esta es una solución realmente simple que faltaba. No es necesario crear un ListView personalizado o incluso un diseño personalizado.

Simplemente cree una subclase anónima de ArrayAdapter y anule getView (). Deje que super.getView () maneje todo el trabajo pesado. Como simple_list_item_1 es solo una vista de texto, puede personalizarla (por ejemplo, establecer textColor) y luego devolverla.

Aquí hay un ejemplo de una de mis aplicaciones. Estoy mostrando una lista de ubicaciones recientes y quiero que todas las apariciones de “Ubicación actual” sean azules y el rest de color blanco.

 ListView listView = (ListView) this.findViewById(R.id.listView); listView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, MobileMuni.getBookmarkStore().getRecentLocations()) { @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView = (TextView) super.getView(position, convertView, parent); String currentLocation = RouteFinderBookmarksActivity.this.getResources().getString(R.string.Current_Location); int textColor = textView.getText().toString().equals(currentLocation) ? R.color.holo_blue : R.color.text_color_btn_holo_dark; textView.setTextColor(RouteFinderBookmarksActivity.this.getResources().getColor(textColor)); return textView; } }); 

Solo debe anular el método ArrayAdapter de ArrayAdapter

 ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, mStringList) { @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); TextView text = (TextView) view.findViewById(android.R.id.text1); text.setTextColor(Color.BLACK); return view; } }; 

La forma más sencilla de hacerlo sin tener que crear nada adicional sería simplemente modificar la lista simple TextView :

 ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, android.R.id.text1, strings) { @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView = (TextView) super.getView(position, convertView, parent); textView.setTextColor({YourColorHere}); return textView; } }; 

En palabras simples “no puedes hacerlo a través de setListAdapter simple” . debe usar una vista de lista personalizada para realizar cambios libremente en el color del texto o en cualquier otra vista

para Custom Listview puede ir con este enlace

puede usar el método setTextColor (int) o agregar estilo para cambiar el color del texto.

  

También me enfrento a esta situación. Puede manejar el método anterior. pero simple si pasa simple_dropdown_item_1line como recurso. Será texto de color negro por defecto.

Este es mi código que he logrado en el tipo de situación.

 ArrayAdapter arrAdapter = new ArrayAdapter(context,android.R.layout.simple_dropdown_item_1line,countryList); listView.setAdapter(arrAdapter); 

Tu código a continuación:

 setListAdapter(new ArrayAdapter(getApplicationContext(), android.R.layout.simple_dropdown_item_1line, mStringList)); 

En realidad, android.R.layout.simple_dropdown_item_1line se utiliza para el menú desplegable. Te pido que veas este contenido de diseño una vez. Es solo texto simple. eso es todo. Su propiedad no afectará su tarea. Lo revisé. Funciona bien.

Pruebe este código en lugar de android.r.layout.simple_list_item_single_choice cree su propio diseño:

 < ?xml version="1.0" encoding="utf-8"?>   

Si desea mantener todo el estilo pero cambiar algunos detalles, puede usar el estilo predeterminado definido en Android y cambiar lo que desee

  

Luego configure el adaptador usando:

 setListAdapter(new ArrayAdapter(getApplicationContext(), R.layout.list_item_custom, mStringList)); 

Fuente: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/layout/simple_list_item_activated_1.xml

Si está creando una clase que amplía un Adaptador, puede usar la variable principal para obtener el contexto.

 public class MyAdapter extends ArrayAdapter { private Context context; @Override public View getView(int position, View convertView, ViewGroup parent) { context = parent.getContext(); context.getResources().getColor(R.color.red); return convertView; } } 

Puede hacer lo mismo con RecyclerView.Adapter, pero en lugar de getview () usará onCreateViewHolder ().

Cree un archivo xml en res / values ​​y copie el siguiente código

  

y especifica el estilo en la actividad en Manifiesto como abajo

  android:theme="@style/BlackText" 

prueba este código …