2012-12-11 258 views
2


设置GridView默认选择

任何人都可以指导我如何设置网格视图的特定元素为选定的?

.setSelection(positionOfItem)不起作用。

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

define'is not working'? – njzk2

+0

你的意思是? –

+0

setSelection此时不能被调用,我想。你需要等待你的名单被显示 – njzk2

回答

2

它为我工作

mGridView.setSelection(pos); 
mGridView.requestFocusFromTouch(); 
mGridView.setSelection(pos); 
+1

不能正常工作.... –

+0

你设置选择两次比也没有工作的人! –

0

试试这个:

grid.performItemClick(view, position, id); 

然后我的状态绘制的作品上正确的GridView。

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控件。