Layout MonoDroid-XML布局和模板

Layout MonoDroid-XML布局和模板,layout,xamarin.android,Layout,Xamarin.android,我刚刚开始研究使用MonoDroid的Android编程,它来自Silverlight/WPF/WinForms背景 我正在尝试解决如何创建一个视图组,该视图组构造基于某种模板形式构造的子元素。这最好可以在布局XML中指定。有人能指出你是怎么做到的吗 有没有任何样本可以证明这种行为 我正在寻找与SL/WPF/WinRT ItemsControl中的DataTemplate相似的行为 我不确定您想做什么,但听起来您想寻找一种显示项目列表的方法,其中每个项目都基于特定的布局?如果是这样的话,那么这个

我刚刚开始研究使用MonoDroid的Android编程,它来自Silverlight/WPF/WinForms背景

我正在尝试解决如何创建一个视图组,该视图组构造基于某种模板形式构造的子元素。这最好可以在布局XML中指定。有人能指出你是怎么做到的吗

有没有任何样本可以证明这种行为


我正在寻找与SL/WPF/WinRT ItemsControl中的DataTemplate相似的行为

我不确定您想做什么,但听起来您想寻找一种显示项目列表的方法,其中每个项目都基于特定的布局?如果是这样的话,那么这个类可能就是你想要的。在Android中,列表中的每个项目都可以是任何视图,并且可以从代码或XML中定义的布局创建。Xamarin提供了一些简单的列表示例来帮助入门

当您想要更多地自定义列表项时,您可能会发现自己想要创建自己的自定义列表适配器类,而不是使用其中一个内置类。这可能看起来像这样,例如:

public class MyListAdapter : BaseAdapter<MyModel>
{
    private readonly Activity _context;
    private readonly IList<MyModel> _items;

    public MyListAdapter(Activity context, IList<MyModel> items)
    {
        _context = context;
        _items = items;
    }

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        var view = convertView
                    ?? _context.LayoutInflater.Inflate(Resource.Layout.Item, null);

        view.FindViewById<TextView>(Resource.Id.Name).Text = _items[position].Name;

        return view;
    }

    public override int Count
    {
        get { return _items.Count; }
    }

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

    public override MyModel this[int position]
    {
        get { return _items[position]; }
    }
}
公共类MyListAdapter:BaseAdapter
{
私有只读活动\u上下文;
私有只读IList_项;
公共MyListAdapter(活动上下文、IList项)
{
_上下文=上下文;
_项目=项目;
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
变量视图=转换视图
??U context.LayoutInflater.Inflate(Resource.Layout.Item,null);
view.findviewbyd(Resource.Id.Name).Text=\u items[position].Name;
返回视图;
}
公共覆盖整数计数
{
获取{return\u items.Count;}
}
公共覆盖长GetItemId(int位置)
{
返回位置;
}
公共覆盖MyModel此[int位置]
{
获取{返回_项[位置];}
}
}