我需要更改数据表中标题单元格区域的文本。
为了实现这一点,我需要检索并存储分配给这些单元格的 View ID,以便以后可以使用它们来标识那些单元格 View 。
但是,当我尝试获取刚刚膨胀的单元格 View 的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,尽管 View ID已经分配并且在代码调试过程中是可见的。例如,在调试过程中,我可以看到以下内容:
converView = LinearLayout(id = 830042440680)

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

最佳答案

从Android LayoutInflater文档中:



所以当你打电话

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

converView只是由您的布局充气工具创建的,没有ID。您应该这样手动设置ID
converView.setId(YOUR_GENERATED_ID);

关于android view.getId()返回-1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15110474/

10-11 00:27