我是否可以在GetView方法中添加ListView节头?

时间:2014-06-01 14:10:21

标签: android android-listview xamarin sectionheader getview

在Xamarin中,我有一个ListView适配器,其中包含以下GetView方法:

public override View GetView(int position, View convertView, ViewGroup parent)
{
    var item = items[position];
    View view = convertView;
    if (view == null)
        view = context.LayoutInflater.Inflate(Resource.Layout.MapLocationDetail, null);
    view.FindViewById<TextView>(Resource.Id.TextViewMapHeading).Text = item.Heading;
    view.FindViewById<TextView> (Resource.Id.TextViewDescription).Text = item.SubHeading;
    view.FindViewById<ImageView>(Resource.Id.Image).SetImageResource(item.ImageResourceId);
    return view;
}

ListView section header的所需位置添加默认ListView的过程是什么?

这是在GetView方法或其他地方完成的吗?此外,是否有用于默认节标题的内置布局?

提前致谢

1 个答案:

答案 0 :(得分:0)

与Xamarin.iOS不同,没有一个方便的方法可以覆盖节标题。

您需要做的是在常规视图单元格中包含您的剖面视图。默认情况下,您希望将此部分视图的可见性设置为“已消失”。在GetView方法中,您可以检测到您是否在该部分的开头。如果是,则将该部分视图的可见性设置为“可见”,并设置所需的任何文本。

这是一个小代码示例:

var headerTextView = view.FindViewById (Resource.Id.parentDirectoryHeader) as TextView;

if (position != 0) {
    view.FindViewById (Resource.Id.parentDirectoryHeader).Visibility = ViewStates.Visible;
} else {
    view.FindViewById (Resource.Id.parentDirectoryHeader).Visibility = ViewStates.Gone;
}