8

我需要更改数据表中一系列标题单元格的文本。
为了实现这一点,我需要检索并存储分配给这些单元格的视图 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) 吗?

4

1 回答 1

11

来自 Android LayoutInflater 文档:

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

所以当你打电话

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

converView 只是由您的布局充气器创建并且没有 ID。您应该像这样手动设置 ID

converView.setId(YOUR_GENERATED_ID);
于 2013-02-27T11:14:09.010 回答