Android.App.Activity 是一种类型,但需要一个变量

Android.App.Activity is a type but a variable was expected

string[] arrays = new string[] { "A", "B", "C", "D", "E", "F" };
ListView lstItems;
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    // Set our view from the "main" layout resource
    SetContentView(Resource.Layout.Main);

    // Get our button from the layout resource,
    // and attach an event to it

    lstItems = FindViewById<ListView>(Resource.Id.listView1);
    lstItems.Adapter = new CustomAdapter(Activity, arrays);
}

public class CustomAdapter : BaseAdapter
{
    //private  const int TYPE_ITEM = 0;
    //private const int TYPE_SEPARATOR = 1;

    string[] mData;
    //private TreeSet sectionHeader;

    LayoutInflater mInflater;

    public CustomAdapter(Context context, string[] Data)
    {
        mInflater = LayoutInflater.FromContext(context);

        mData = Data;
    }

    public override int Count
    {
        get { return mData.Length; }
    }


    public override Java.Lang.Object GetItem(int position)
    {
        return mData[position];
    }

    public override long GetItemId(int position)
    {
        return position;
    }

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        ViewHolder holder = null;
        //var data = mData [position];

        if (convertView == null)
        {
            holder = new ViewHolder();
            holder.textViewHeader = (TextView)convertView.FindViewById(Resource.Id.textviewHeaderItems);
            holder.textViewSeparator = (TextView)convertView.FindViewById(Resource.Id.textviewItemsSeparator);

            convertView.Tag = holder;
        }
        else
        {
            holder = (ViewHolder)convertView.Tag as ViewHolder;
        }

        for (int i = 0; i <= mData.Length - 1; i++)
        {
            if (i == 0)
            {
                holder.textViewHeader.Text = "Group A";
            }
            else if (i == 4)
            {
                holder.textViewHeader.Text = "Group B";
            }

            holder.textViewSeparator.Text = mData[i];
        }

        return convertView;
    }
}

public class ViewHolder : Java.Lang.Object
{
    public TextView textViewHeader { get; set; }
    public TextView textViewSeparator { get; set; }
}

CustomerAdapter 我有一个 string[] Data 参数。在 OnCreate 之后,我在 lstItems.Adapter = new CustomAdapter(Activity, arrays) 遇到了这个问题。没看懂。

我试图在 xamarin android 上创建一个 header 列表视图。 我看到了几个示例,但该代码有很多错误。

Activity 是一种类型。您需要的是 Context 类型的实例。在 Xamarin Android 中,最常见的是 Android.App.Application.Context.

所以你的行应该是这样的:

lstItems.Adapter = new CustomAdapter(Android.App.Application.Context, arrays);

您传递的是 Activity class 名称。相反,您应该传递您所在的 Activity 的实例。您应该像下面那样从 Activity

实例化 Adapter
lstItems.Adapter = new CustomAdapter (this, arrays);