5

グリッドビューで特定の項目をクリック可能からクリック不可に設定しようとしています。そのため、カスタムアダプターとonitemclicklistenerを備えたグリッドビューがあります。私のカスタム アダプターでは、getView メソッドで次のことを実行しようとしています: (isEnabled の呼び出しについて読んだため..)

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;

    }

奇妙なことに、値が > 5 の項目がありますが、すべての項目がクリック可能ではなくなりました。何が原因なのかわかりません...

4

1 に答える 1

9

つまり、ここで実際に行っているのは、組み込みメソッドをオーバーライドしisEnabled(int)て、常に false を返すように指示することです。これにより、アダプターは、セルを有効にしてはならないことを常にグリッドに伝えます。

あなたが実際に探しているのは、もっと似たものです

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

ここで重要なのは、あなたが電話をかけているわけではないということですisEnabled。をオーバーライドisEnabledしており、GridViewはそれを自動的に呼び出して、クリック可能にするセルとクリックできないセルを決定しています。isEnabledしたがって、この目的のためにコード内のどこでも実際に呼び出すべきではありません。

于 2012-10-02T14:28:37.687 に答える