Cómo resaltar ListView-Items

Tengo el siguiente problema.

Tengo un ListView con las filas de encargo que consisten en una vista de la imagen y un textview. El código xml de la vista de texto es

<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="26px" android:layout_marginLeft="3px" android:singleLine="true" android:ellipsize="end" android:textColorHighlight="#FEC403" /> 

Entonces tengo un itemclicklistener que funciona bien y quiero resaltar el texto que se ha hecho clic haciendo lo siguiente.

 public void onItemClick(AdapterView<?> adaptview, View clickedview, int position, long id) { //TODO: ACTIONS String pathtofile = (String) adaptview.getItemAtPosition(position); View rowview = (View) adaptview.getChildAt(position); rowview.setSelected(true);} 

Quería que el color de resaltado fuera "# FEC403" en el xml (que es un naranja claro), pero el color de resaltado sigue siendo gris. ¿Cómo fijar el highlightcolor correctamente?

gracias por adelantado

EDITAR:

Aquí es cómo lo hice finalmente:

Este es mi archivo ListView xml file:

 <?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/rowselector" > <ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/musicicon" android:layout_width="wrap_content" android:layout_height="fill_parent" android:src="@drawable/musicicon" android:paddingLeft="3px" /> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="26px" android:layout_marginLeft="3px" android:singleLine="true" android:ellipsize="end" android:focusable="false" /> 

Y el rowselector.xml:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@color/orange" /> </selector> 

Y por último mi OnItemClick es muy corto ahora:

 @Override public void onItemClick(AdapterView<?> adaptview, View clickedview, int position, long id) { //TODO: ACTIONS clickedview.setSelected(true); } 

Debe utilizar un Selector .

Esta pregunta y su respuesta podrían ayudar ….

 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) { for(int a = 0; a < parent.getChildCount(); a++) { parent.getChildAt(a).setBackgroundColor(Color.BLACK); } view.setBackgroundColor(Color.RED); } 

En su Actividad:

 listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long itemid) { itemOnclickList(position, view); } }); public void itemOnclickList(int position, View view) { if (listview.isItemChecked(position)) { view.setBackgroundDrawable(getResources().getDrawable(R.drawable.image_checked)); } else { view.setBackgroundDrawable(getResources().getDrawable(R.drawable.image_uncheck)); } adapter.notifyDataSetChanged(); } 

En su adaptador:

  public View getView(int position, View view, ViewGroup parent) { View convertView = inflater.inflate(R.layout.listdocument_item, null); ListView lvDocument = (ListView) parent; if (lvDocument.isItemChecked(position)) { convertView.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.image_checked)); } else { convertView.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.image_uncheck)); } return convertView; } 

¡Buena suerte!

Así es como debe ser usando el selector:

Cree un archivo dentro de drawable llamado selector_listview_item.xml , que se parece a (cambie los colores a su propio):

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- pressed --> <item android:drawable="@color/md_grey_200" android:state_pressed="true" /> <!-- default --> <item android:drawable="@color/white" /> </selector> 

Ahora en su diseño que describe la fila de la lista (por ejemplo, layout_list_row.xml), en el diseño de la raíz, añada el android:background="@drawable/selector_listview_item" , por lo que el diseño sería algo así como:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:background="@drawable/selector_listview_item" <!-- this is the important line --> android:orientation="vertical"> <!-- more stuff here --> </LinearLayout> 

(Nota: es posible que desee añadir android:focusable="false" en los elementos dentro de esa fila listview, para hacer que la fila haga clic, como se menciona aquí )

Hecho.

  • Android: ¿Para establecer un elemento como seleccionado cuando se abre ListView?
  • Haga clic en un elemento ListView cambia el estado de los elementos dentro del elemento?
  • Cómo arrastrar el elemento de lista desplegable a otro ListView
  • Cómo iterar elementos de ListView en Android
  • Vista de la lista de android
  • Android: Cómo ocultar un elemento ListView
  • Inserción de contenido con escala escalable personalizada
  • ¿Cómo uso OnItemClickListener para iniciar una nueva intención en función de qué elemento se hace clic?
  • Android adapter.getItem (position) .getItemId () no funciona (El método getId () no está definido para el tipo Object)
  • Problema al seleccionar el color del selector ListView cuando se pulsa
  • Buggy ListView me hace triste
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.