2012-10-02 17 views
5

Próbuję ustawić niektóre elementy w moim widoku siatki z klikalny na nieklikalny. Więc mam gridview z niestandardowym adapterem na nim i onitemclicklistener. W mojej karty niestandardowej, staram się wykonać następujące czynności w moim sposobie getView: (od Czytałam o wywołanie IsEnabled ..)Ustaw niektóre elementy w widoku siatki nieklikalne

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; 

    } 

Najdziwniejsze jest to, teraz każdy element nie jest klikalny, chociaż istnieją pozycje gdzie wartość jest> 5 .. Nie wiem, co jest przyczyną tego ...

+0

Czy powinno być 'isEnabled (wartość)' zamiast 'isEnabled (pozycja)'? – DeeV

Odpowiedz

9

Więc to co tutaj robisz to nadpisanie wbudowanej metody isEnabled(int) i nakazanie jej, aby zawsze zwracała fałsz. Powoduje to, że twój adapter zawsze informuje sieć, że jej komórki nie powinny być włączone.

Co jesteś rzeczywiście patrząc na to coś więcej jak

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

Kluczem tutaj jest to, że nie jesteś jednym wywołaniem isEnabled. Nadpisujesz numer isEnabled, a GridView wywołuje go automatycznie, aby określić, które komórki powinny być klikalne, a które nie. Dlatego nigdy nie powinieneś nigdy dzwonić pod numer isEnabled w tym celu.

+0

Dobra, rozumiem. Brzmi jasno! Dzięki! –

Powiązane problemy