2


グリッドビューの特定の要素を選択済みとして設定する方法を教えてもらえますか?

.setSelection(positionOfItem)が機能していません。

gridViewSize  =  (GridView) inflaterView.findViewById(R.id.grid_sizes);
        gridViewSize.setAdapter(new PopupSizeAdapter(context,typeArr,1));
        gridViewSize.setSelection(0);
4

3 に答える 3

2

それは私のために働いた

mGridView.setSelection(pos);
mGridView.requestFocusFromTouch();
mGridView.setSelection(pos);
于 2012-12-11T08:59:23.167 に答える
1

今日同じ問題に遭遇しました。以下が私の解決策です。

GridView.getViewTreeObserver.addOnGlobalLayoutListener(getLayoutListener(mGridView))
private static ViewTreeObserver.OnGlobalLayoutListener getLayoutListener(final GridView mGridView) {
    ViewTreeObserver.OnGlobalLayoutListener listener = new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            View view = mGridView.getChildAt(0);
            if(view != null) {
                if(!view.isSelected()) {
                    view.setSelected(true);
                } else {
                    // remove the listener after the first time.
                    if (Build.VERSION.SDK_INT < 16) {
                        mGridView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    } else {
                        mGridView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                    }
                }
            }
        }
    };

    return listener;
}

また、Android API >= 11 を使用している場合は、View.OnLayoutChangeListener を GridView に追加することもできます。

于 2013-09-24T16:48:01.860 に答える