0

gridview の onitemselected の動作は Android によって制御されているようですが、一部のアイテムを無効にして onItemSelected() をコールバックするにはどうすればよいですか?

私のコード:

@Override
    public void onItemSelected(AdapterView<?> parent, View view, int position,
            long id) {

        if (view == null) return;

        Utils.log(TAG, "view = " + view.toString() + ",pos = " + position + " , id =" + id);

        //I want to disable onItemSelected after positon 3: (But I failed.)
        if (position > 3) {
            if (mLSV != null) {
                onItemSelected(mGridView,mLSV, mLastPosition, mLastSelectedId);
                return;
            }
        }

        if (!mGridView.isFocused()) return;

        if (mLSV != null) {
            mLSV.setBackgroundColor(CMainUI_Model.BG_COLOR); 
        }
        Utils.log(TAG, "onItemSelected, pos = " + position);

        mLSV = view;
        mLastPosition = position;
        mLastSelectedId = mGridView.getSelectedItemId();
    }

onItemSelected() を使用して、D-pad でナビゲートするときにアイテムの背景をフォーカスのように変更します。そして、位置 3 の後に onItemSelected() を呼び出したくなく、「フォーカス」が位置 3 で停止しました。ありがとう!

4

3 に答える 3

1

かなり前のことですが、アダプターでこれらのメソッドをオーバーライドすると役立つ場合があります。

@Override
public boolean isEnabled(int position) {
    // Check if position is enabled or not
    return true;
}

@Override
public boolean areAllItemsEnabled() {
    return false;
}
于 2016-07-22T11:37:44.077 に答える
0

onKey() コールバックをオーバーライドして、フォーカスが制限に達した場合に一部の方向キー イベントを無効にします。これが最善の解決策だと思います。アダプターの項目に onFocusChangedListener を設定しないでください。Android のキャッシュ システム convertView によって項目が失われたり、不正な形式になったりするためです。

于 2012-10-26T03:48:14.593 に答える
0

これはどうですか?

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
        long id) {

    if (view == null) return;

    Utils.log(TAG, "view = " + view.toString() + ",pos = " + position + " , id =" + id);

    //I want to disable onItemSelected after positon 3: 
    if (position > 3) return;

    if (!mGridView.isFocused()) return;

    if (mLSV != null) {
        mLSV.setBackgroundColor(CMainUI_Model.BG_COLOR); 
    }
    Utils.log(TAG, "onItemSelected, pos = " + position);

    mLSV = view;
    mLastPosition = position;
    mLastSelectedId = mGridView.getSelectedItemId();
}

この onItemSelected メソッドを試してください...

于 2012-10-15T15:51:10.503 に答える