2012-10-02 12 views
5

Sto provando ad impostare determinati elementi nel mio gridview da cliccabile a non cliccabile. Quindi ho una griglia con un adattatore personalizzato su di esso e un onitemclicklistener. Nel mio adattatore personalizzato, cerco di fare quanto segue nel mio metodo GetView: (da quando ho letto di chiamare isEnabled ..)Imposta un determinato elemento in gridview non selezionabile

if(int value < 5) { //item can not be clickable 
isEnabled(position); 
} else { 
//other things happen, but isEnabled is not called here in any case 
} 
//...... 
@Override 
    public boolean isEnabled(int position) { 

      return false; 

    } 

La cosa strana è, ora ogni elemento non è cliccabile, anche se ci sono elementi in cui il valore è> 5 .. Non so che cosa stia causando questo ...

+0

Dovrebbe essere 'isEnabled (valore)' invece di 'isEnabled (posizione)'? – DeeV

risposta

9

Quindi, ciò che stai facendo in questo caso è sovrascrivere un metodo integrato isEnabled(int) e dire che restituisce sempre false. Questo fa sì che l'adattatore dica sempre alla tua rete che le sue celle non dovrebbero essere abilitate.

cosa si sta effettivamente cercando è qualcosa di più simile a

public boolean isEnabled(int position) 
{ 
    if(position < 5) 
     return false; 
    else 
     return true; 
} 

La chiave qui è che non siete quello chiamando isEnabled. Stai ignorando lo isEnabled e lo GridView lo chiama automaticamente per determinare quali celle devono essere selezionabili e quali no. Quindi non dovresti mai chiamare lo isEnabled in qualsiasi parte del tuo codice per questo scopo.

+0

Va bene, vedo. Sembra chiaro! Grazie! –

Problemi correlati