2013-04-20 15 views
5

Volevo implementare la funzionalità Pull to Refresh nella mia applicazione Android, quindi ho implementato questa libreria: Android-PullToRefresh. Tuttavia, non riesco a impostare lo stile personalizzato per dividere a livello di codice.Come si imposta un ListView personalizzato con divisore utilizzando Android?

Il codice è semplice:

list = (PullToRefreshListView) findViewById(R.id.list); 
int[] colors = {0, 0xFF97CF4D, 0}; 
list.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors)); 
list.setDividerHeight(1); 

Tuttavia, si sta gettando questo errore: The method setDivider(GradientDrawable) is undefined for the type PullToRefreshListView e The method setDividerHeight(int) is undefined for the type PullToRefreshListView.

Che cosa sto facendo male qui?

risposta

8

PullToRefreshListView non è un ListView, quindi quell'errore. È necessario accedere allo ListView all'interno di PullToRefreshListView e invocare i metodi setDivider* su quello.

list = (PullToRefreshListView) findViewById(R.id.list); 
int[] colors = {0, 0xFF97CF4D, 0}; 
ListView inner = list.getRefreshableView(); 
inner.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors)); 
inner.setDividerHeight(1); 

In alternativa è possibile definire il gradiente come drawable XML e impostare gli attributi a destra nel layout, come mostrato nel campione here

esempio:

<com.handmark.pulltorefresh.library.PullToRefreshListView 
    android:divider="@drawable/fancy_gradient" 
    android:dividerHeight="@dimen/divider_height"... 
+0

dà l'errore: 'Tipo mancata corrispondenza: impossibile convertire da ListView a PullToRefreshListView' – input

+1

controlla il codice sopra: dovresti invocare' getRefreshableView() 'sul tuo' PullToRefreshListView'. La trasmissione a ListView è inutile in questo caso. Mi libererò di ciò nella mia risposta. –

+0

Il codice non ha funzionato. Ho finito per disegnare il divisore con un disegnabile XML. Grazie per l'aiuto! :) – input

Problemi correlati