android view.getId()返回-1

时间:2013-02-27 11:05:19

标签: android view

我需要更改数据表中一系列标题单元格的文本 为了实现这一点,我需要检索并存储分配给这些单元格的视图ID,以便稍后可以使用它们来识别这些单元格视图。
但是,当我尝试获取刚刚膨胀的单元格视图的ID时,它总是返回-1。

以下是我的示例代码:

@Override
public View getView(final int row, final int column, View converView, ViewGroup parent) {
    if (converView == null) {
        converView = inflater.inflate(getLayoutResource(row, column), parent, false);
        if (row == -1){
            int viewId = converView.getId();
            setHeaderId(viewId, column+1);

        }  
    }
...     
}

上面代码中的converView.getId()返回-1,尽管视图id已经分配并且在代码调试期间可以查看。例如,我在调试期间可以看到以下内容: converView = LinearLayout(id = 830042440680)

知道为什么我在上面的代码中得到-1(= NO_ID)?

1 个答案:

答案 0 :(得分:10)

从Android LayoutInflater文档:

  

从指定的xml资源中扩充新的视图层次结构。

所以当你打电话

converView = inflater.inflate(getLayoutResource(row, column), parent, false);

converView只是由您的布局inflater创建,没有ID。您应该像这样手动设置ID

converView.setId(YOUR_GENERATED_ID);