【发布时间】:2025-11-22 05:40:02
【问题描述】:
我的应用中有一个列表,它被实现为 AbsListView,因此当我们在较小的屏幕(手机)上工作时,它是一个列表,而当我们在较大的屏幕(平板电脑)上工作时,它是一个网格。 一切正常。
现在我想添加一个与列表中的常规项目完全不同的标题项目 - 它有一个完全不同的 xml 文件。它始终是列表中的第一项。
我已将代码添加到我的适配器类中,如下所示:
public override View GetView(int position, View convertView, ViewGroup parent)
{
SavedInfo subViews = null;
var rowView = convertView;
var channel = items[position];
// don't want to reuse if our previous view was a header
if (rowView?.Tag != null)
{
subViews = rowView.Tag as SavedInfo;
}
// try to put in a different view if there is a header shown
// special id value for header is -1
if (position == 0)
{
subViews = null;
}
if (subViews == null)
{
if (position == 0)
{
rowView = context.Activity.LayoutInflater.Inflate(Resource.Layout.header_layout, null);
// Do setup stuff with this layout
rowView.Tag = null;
return rowView;
}
rowView = context.Activity.LayoutInflater.Inflate(cellLayout, null);
// Do stuff with regular layout, take savedInfo from Tag
rowView.Tag = subViews;
}
// other adjustments to the regular layout
return rowView;
}
所以在常规列表中这很好 - 我有一个标题项目和许多常规项目。但是,当我切换到 GridView(使用相同的适配器)时,我的“标题”项现在只是网格中的第一个单元格。
我想要它的样子与列表视图中的差不多 - 单列填充屏幕的宽度,然后是常规网格。关键是我想要一个填充所有列的项目,但随着网格向上滚动。有没有办法做到这一点?我知道我可能需要用某种自定义适配器视图替换。有没有人有一个用一个项目填充多个网格列的网格的代码示例?
谢谢
【问题讨论】:
标签: android listview gridview xamarin customization