2013-06-16 14 views
5

Utilizzo una ListView come vista secondaria nel mio SlidingPaneLayout. La vista principale è un frammento di mappa. ListView funge da menu. Il problema è che onItemClickedListener non viene mai chiamato sul ListView. Anche la riga elenco non viene mai evidenziata sulla stampa. sembra che il ListView non riesca a focalizzarsi.Android, SlidingPaneLayout e listView

MODIFICA: attualmente, slidingPaneLayout.findFocus() indica che android.widget.ListView. ancora senza fortuna nel fare clic sugli elementi della lista.

Ecco il mio xml

<com.ziz.luke.custom_components.MySlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/slidingpanelayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ListView 
     android:id="@+id/contactsList" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="#00000000" > 
    </ListView> 

    <TextView 
     android:id="@+id/android:empty" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:gravity="center_horizontal|center_vertical" 
     android:text="@string/noContacts" /> 
</RelativeLayout> 

<fragment 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.SupportMapFragment" /> 
</com.ziz.luke.custom_components.MySlidingPaneLayout> 

Come posso risolvere questo ??

+0

incolla il codice in cui si imposta i tuoi ascoltatori, se la tua lista sta diventando attiva e la vista sembra corretta, il problema probabilmente non è nel tuo xml di layout. Inoltre, come fai a mostrare/nascondere 'vuoto'? – edthethird

+0

Questo è quello che ho fatto. stesso problema. e immagino che sia qualcosa legato allo SlidingPaneLayout stesso. –

+0

puoi pubblicare anche il codice java? – edthethird

risposta

6

Ho trovato la risposta. Stavo usando una sottoclasse di SlidingPaneLayout in cui ero imperativi

onInterceptTouchEvent(MotionEvent arg0) 

stavo cercando di fare quanto segue:

  • aprire lo slidingPaneLayout useing un pulsante.
  • chiude il slidingPaneLayout utilizzando un pulsante.
  • Chiudere lo slidingPaneLayout utilizzando lo scorrimento.
  • impedisce all'utente di aprire lo slidingPaneLayout usando lo scorrimento.

Così, ho creato un booleano all'interno della mia sottoclasse chiamato shouldSwipe per essere restituito dal metodo over-ridden.

l'implementazione che ha causato il problema era:

@Override 
    public boolean onInterceptTouchEvent(MotionEvent arg0) { 

     return shouldSwipe; 
    } 

che ha causato il problema quando (shouldSwipe = true) perché indica al sistema che l'evento di tocco già si consuma e ne impedisce la propagazione.

ho risolto che l'utilizzo di questo:

@Override 
    public boolean onInterceptTouchEvent(MotionEvent arg0) { 
     // TODO Auto-generated method stub 
     return shouldSwipe ?super.onInterceptTouchEvent(arg0):shouldSwipe; 
    } 

il gioco è fatto.

+0

ciao, sto usando slidingUpPanelLayout per la mia app. Ho una vista trascinabile con nel pannello. ma non riesco a farlo scorrere verticalmente. Potete per favore aiutarmi per questo. –

3

Ho appena creato un progetto di esempio utilizzando SlidingPaneLayout.

Non ho usato nessuna mappa perché non c'è il problema, quindi mi riferisco alla posizione della mappa con TextView. Ho usato un ListFragment che funziona e riceve gli ascoltatori di clic. Si prega di scaricare il progetto da qui:

https://dl.dropboxusercontent.com/u/33565803/StackOverFlowExamples/SlidingPaneLayoutExample.zip

fatemi sapere se avete qualsiasi problema di configurazione e se si risolve il problema;)

(sto usando ActionBarSherlock solo perché io sono abituato, così puoi rimuoverlo se lo desideri)