Android:当键盘打开并覆盖网格时,gridview的子项为null

时间:2013-07-04 03:50:43

标签: android gridview keyboard children

我有一个由31个单元组成的gridview。用户可以选择任何单元格组合,然后单击按钮以保存其选择。一旦他们单击“保存”按钮,就会出现一个对话框,询问他们接下来要做什么。在此对话框中是编辑文本视图。当用户在编辑文本框内单击时,将出现键盘。当发生这种情况时,31个单元格中只有21个在屏幕上可见,当我尝试调用GridView类的getChildrenCount()方法时,我只看到21个孩子。有人可以解释为什么会发生这种情况以及我可以做些什么来消除这个问题我附上图片希望澄清问题。下面我贴了一段代码,我试图得到gridview的子计数。

protected Set<String> getSelectedFrequencies() {
    Set<String> selectedFrequencies = new HashSet<String>();
    for(int i = 0; i < gridView.getChildCount(); i++) {
        ViewGroup gridChild = (ViewGroup) gridView.getChildAt(i);
        for(int k = 0; k < gridChild.getChildCount(); k++) {
            if( gridChild.getChildAt(k) instanceof Button ) {
                if(gridChild.getChildAt(k).isSelected()) {
                    selectedFrequencies.add(gridChild.getChildAt(k).getTag().toString());
                }
            }
        }
    }
    return selectedFrequencies;
}

代码没有什么特别之处。Image capture of GridView before dialog appears and keyboard pops up Image capture of GridView when keyboard pops up

1 个答案:

答案 0 :(得分:1)

您使用的是平移或调整大小的softInputMode吗?随着潘永远不会发生。使用resize,可能只有21个适合屏幕,因此gridView只创建21个子项并在滚动时查看交换。如果您不知道,listview和gridview只会创建适合屏幕所需的视图。滚动它时,只需将新位置的数据加载到现有视图中。