Il selettore di Android per l'elemento selezionato non funziona

Ho una list di liste, where desidero evidenziare gli elementi selezionati in modo personalizzato. getView properties; di each elemento nel metodo getView dell'adattatore, incluso itemView.setSelected(true) .

Il layout principale definisce la listview nel modo seguente:

  • Come aggiungere il pacchetto java.awt.image in Android
  • Tasso di limite Tasso di errore superato quando si utilizza API Google Cloud Messaging
  • Imansible build il pacchetto Android firmato tramite la cordova visiva dello studio
  • Come uscire da un'applicazione web a schermo integer
  • Perché arm-linux-androidabi-gcc impone -fpic?
  • Invio di un valore boolean a un PLC da Android
  •  <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:choiceMode="multipleChoice" android:listSelector="@drawable/list_selector" /> 

    (Anche la riproduzione con modalità di scelta non aiuta).

    Il list_selector è uno stub quasi vuoto:

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

    Non ho bisogno di stili specifici per la visualizzazione di liste nel suo complesso, per cui lascio un valore predefinito, ma in base a questa risposta , abbiamo bisogno di un selettore per una list di visualizzazioni per il selettore degli elementi da utilizzare. Comunque, senza il list_selector rimane il problema.

    Il layout dell'elenco di visualizzazioni:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:background="@drawable/listitem_background" android:orientation="vertical"> 

    e fa riferimento al seguente selettore di listitem_background :

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

    Il problema è che gli elementi selezionati non hanno background bianco.

    Se cambio l' android:state_selected="true" selettore android:state_selected="true" nel listitem_background per esempio, android:state_pressed="true" , allora il selettore inizia a funzionare, cioè il colore dell'elemento diventa bianco se viene toccato un elemento.

    Quindi, suppongo, esiste un errore nei selettori o nel modo in cui seleziono gli elementi.

    Posso scrivere una soluzione alternativa impostando lo background da Java o utilizzando stati controllabili, ma voglio capire e risolvere il problema corrente con i selettori. Grazie in anticipo.

  • java.lang.NoClassDefFoundError: android.support.v4.app.NavUtilsJB quando si aggiunge un nuovo module in Android Studio
  • Google Cloud Messaging - CCS (XMPP) vs server HTTP
  • Come connettersi a un database MySQL da un'applicazione Android?
  • Come utilizzare RadioGroup in adattatore personalizzato ListView?
  • Come creare pulsanti veramente piccoli in android dal codice?
  • Cosa devo fare per connettersi a Server da eclipse - Android?
  • 2 Solutions collect form web for “Il selettore di Android per l'elemento selezionato non funziona”

    E l'aggiunta di questa row nella visualizzazione di elementi?

     android:background="?android:attr/activatedBackgroundIndicator" 

    Per esempio:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="?android:attr/activatedBackgroundIndicator" android:orientation="vertical" > <TextView android:id="@+id/textViewListRowOption" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" /> </LinearLayout> 

    Poi il selettore sembra qualcosa di simile:

     <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_mediumAnimTime"> <item android:drawable="@drawable/list_pressed" android:state_pressed="true"/> <item android:drawable="@drawable/list_selected" android:state_activated="true"/> <item android:drawable="@drawable/list_default"/> </selector> 

    E la vista dell'elenco:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listViewMainFragment" android:layout_width="match_parent" android:layout_height="wrap_content" android:listSelector="@drawable/list_item_selector" android:choiceMode="singleChoice"> </ListView> </LinearLayout> 

    Prova questo per cambiare l'elemento selezionato dell'elenco. Posizionalo all'interno della visualizzazione di elenco.

     if (currentSelectedView != null && currentSelectedView != v) { unhighlightCurrentRow(currentSelectedView); } currentSelectedView = v; highlightCurrentRow(currentSelectedView); private void unhighlightCurrentRow(View rowView) { rowView.setBackgroundColor(Color.TRANSPARENT);//to set a color for un-seclected row } private void highlightCurrentRow(View rowView) { rowView.setBackgroundResource(R.drawable.selector_img);//to set a color for seclected row } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.