2012-10-02 14 views
5

Estoy tratando de establecer ciertos elementos en mi gridview de hacer clic para no hacer clic. Así que tengo una vista de cuadrícula con un adaptador personalizado y un onitemclicklistener. En mi adaptador personalizado, trato de hacer lo siguiente en mi método getView: (desde que leí acerca de llamar isEnabled ..)Establecer cierto elemento en gridview no hacer clic en

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; 

    } 

Lo extraño es, ahora cada artículo no se puede hacer clic, aunque hay elementos en los que el valor es> 5 .. No sé qué está causando esto ...

+0

¿Debería 'isEnabled (value)' en lugar de 'isEnabled (position)'? – DeeV

Respuesta

9

Así que lo que estás haciendo aquí es anular un método incorporado isEnabled(int) y decirle siempre que devuelva falso. Esto hace que su adaptador siempre diga a su grilla que sus celdas no deberían estar habilitadas.

Lo que en realidad está buscando es algo más parecido a

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

La clave aquí es que usted no es el que llama isEnabled. Está anulando isEnabled, y el GridView lo llama automáticamente para determinar en qué celdas se debe hacer clic y cuáles no. Por lo tanto, nunca debe llamar al isEnabled en ningún lugar de su código para este fin.

+0

Bien, ya veo. Eso suena claro! ¡Gracias! –

Cuestiones relacionadas