Aplicar el selector android para un niño específico de listview y desactivar el selector en los otros niños en el mismo elemento de lista

Tengo una vista de la lista con los artículos que sostienen 2 visiones cada uno (este ListView parece a un GridView con 2 columnas). Necesitaba el encabezado y el pie de página y no están disponibles en el GridView , así que me volví a usar la vista de lista.

Quiero un selector para la vista individual de cada elemento de lista, el selector de lista no funcionó, aplica el selector a ambas vistas secundarias.

Lo que he probado hasta ahora ????

Hago la opinión de la raíz de cada solo elemento un FrameLayout y utilizo el FrameLayout del android:foreground="@drawable/some_selector" así que puedo simular el atributo de drawSelectorOnTop .

Mi problema :

¿Cómo puedo aplicar el selector sólo al niño presionado en el elemento de vista de lista .

Diseño de vista de lista

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/episode_list" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@android:color/black" android:dividerHeight="5dp" android:listSelector="@null" android:descendantFocusability="afterDescendants" /> </RelativeLayout> 

Elemento del episodio

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:foreground="@drawable/all_show_cell_background_selector" > <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/llEpisode" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#282828" android:paddingBottom="5dp" > <ImageView android:id="@+id/episodeImage" android:layout_width="160dp" android:layout_height="90dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_gravity="center_vertical|center_horizontal" android:adjustViewBounds="true" android:contentDescription="@string/app_name" android:scaleType="centerCrop" android:src="@drawable/video_blank" /> <TextView android:id="@+id/episodeDuration" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@id/episodeImage" android:layout_alignLeft="@id/episodeImage" android:background="@android:color/black" android:gravity="right" android:padding="2dp" android:textColor="#FFFFFF" android:textSize="11sp" /> <!-- android:textColor="#b5b4b4" --> <TextView android:layout_marginTop="2dp" android:id="@+id/episodeTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/episodeImage" android:gravity="right" android:paddingRight="5dp" android:singleLine="true" android:text="hdgsagafasfsdafsdfsdfasddfsad" android:textColor="#ffffff" android:textSize="14sp" > </TextView> <TextView android:id="@+id/showName" android:layout_marginTop="2dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/episodeTitle" android:clickable="true" android:gravity="right" android:paddingRight="5dp" android:text="hdgsagafasfsdafsdfsdfasddfsad" android:textColor="#A8A8A8" android:textSize="13sp" > </TextView> <TextView android:layout_marginTop="2dp" android:id="@+id/noOfViewsText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/showName" android:layout_alignParentBottom="true" android:gravity="right" android:paddingRight="5dp" android:text="@string/number_of_views_text" android:textColor="#A8A8A8" android:textSize="11sp" /> <TextView android:id="@+id/episodeNumberOfViews" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/noOfViewsText" android:layout_toLeftOf="@+id/noOfViewsText" android:layout_toRightOf="@+id/fav_img" android:ellipsize="none" android:gravity="right" android:paddingRight="5dp" android:singleLine="true" android:text="fsdafasdfsad" android:textColor="#A8A8A8" android:textSize="11sp" /> <ImageView android:id="@+id/fav_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/episodeNumberOfViews" android:layout_alignParentLeft="true" android:layout_marginLeft="4dp" android:contentDescription="@string/favourite_title_show" android:src="@drawable/fav_episode" /> </RelativeLayout> </FrameLayout> 

El elemento de lista única contiene 2 elementos de episodio

Este es el contenedor que contiene los 2 episodios

  <?xml version="1.0" encoding="utf-8"?> <!-- This container to help emulate a GridView in each ListView item --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="afterDescendants" android:orientation="horizontal" > </LinearLayout> 

Me enfrento a este problema antes, y tener una solución agradable buscar aquí para el código de ejemplo

Im no realmente seguro sobre primero plano pero lo que realmente hago es utilizar un listview. Entonces en el adaptador i establecer dos disposiciones relativas para cada fila de la lista, aquí está mi lista de atributos:

 <ListView android:id="@+id/seccion_list" android:layout_height="wrap_content" android:layout_width="fill_parent" android:divider="@null" android:dividerHeight="0dp"/> 

En mi adaptador he establecido el diseño para cargar para cada fila, aquí es el primer diseño relativo para el primer fotograma en la fila:

  <RelativeLayout android:id="@+id/primerContenedor" android:layout_width="wrap_content" android:layout_height="@dimen/seccion_3_imagen_height" android:layout_marginLeft="3dip" android:layout_marginRight="3dip" android:layout_marginTop="5dip" android:layout_weight="1" android:clickable="true" android:focusable="true" android:background="@drawable/layout_selector"> 

Tan bassically lo que hago es fijar los atributos clickable y focusable relativos del atributos verdaderos y definir un selector:

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

Establezca el @android:listSelector="@null" para su listview. A continuación, establezca selectores para las vistas secundarias individuales del elemento de lista.

También establece android:descendantFocusability="afterDescendants" en el elemento de lista y establece android:duplicateParentState="false" en el elemento del episodio.

Asumo que usted está utilizando un adaptador de ListView, en el cual usted infla una disposición de encargo que sostiene dos FrameLayouts con diversos ids para las disposiciones izquierdas y derechas. Si no, esta es una solución.

Dentro del adaptador ListView, agregue un int global selectedRowId = -1 y short leftRight = -1 (0 significa a la izquierda, 1 significa a la derecha). En su método getView, al construir el convertView, compruebe si postition == selectedRowId. Si la respuesta es afirmativa, compruebe si la izquierda es 0 o 1, que le dará el elemento seleccionado y podrá manipularlo. A continuación, agregue un onClickListener a cada FrameLayout, en que store selectedRowId = position, leftRight = 0 or 1 basado en la selección y llamada notifyDataSetChanged ().

  • ¿Cómo obtienes el color de la selección en Android?
  • Aplicaciones de Android: Recuperación del contacto "Me" de la lista de contactos
  • Selector de fecha de Android: deshabilitar fechas de vacaciones y fin de semana
  • Selector de color de Android
  • ¿Cómo cambio el tinte de un ImageButton en el enfoque / presione
  • Android: textColor del botón deshabilitado en el selector no se muestra?
  • ImageButton en el widget de pantalla de inicio de Android
  • Fondo de color de fondo de Android Textview
  • Problema al seleccionar el color del selector ListView cuando se pulsa
  • que muestran la hora actual en TimePicker en android
  • Estado de artículo personalizado para selectores de android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.