2

我按照https://nodeload.github.com/necronet/section-list/zip/master的说明实现了部分列表视图。一切正常,但出于好奇,我想知道 Android 操作系统如何getView在适配器的功能中给我正确的 convertView (下面的代码)。有两种类型的视图(两种不同的布局文件),一种是SectionView 和ItemView。想象一种情况,当一个拳头部分和一个项目滚动出屏幕时,视图回收器中有两个视图。然后将要从底部滚动一个新视图。在getView函数中,我必须通过函数检查位置isSection, 以确定我应该在那个位置给出什么观点。令人惊奇的是,Android OS(或任何底层)总是给我正确的 convertView(在 Recycler 中的两种视图中)来回收,它是如何在我检查之前知道的?谢谢。

 public View getView(final int position, final View convertView,
                        final ViewGroup parent) {
        if (isSection(position)) {
            return getSectionView(convertView, sectionPositions.get(position));
        }
        return getItemView(getLinkedPosition(position), convertView,
                parent);
    }
4

1 回答 1

1

这是我对getView适配器如何工作的理解:

这将返回列表中特定项目的视图“类型” - 并因此使用正确convertViewgetView()

@Override
public int getItemViewType(int position) {
    return 0;
}

这将返回有多少种不同类型的视图:

@Override
public int getViewTypeCount() {
    return 0;
}

当然,这些不会以正确的代码返回 0。

于 2013-01-21T03:01:40.893 回答