我刚刚开始研究MonoDroid的Android编程,来自Silverlight / WPF / WinForms背景。
我正在尝试研究如何创建构建基于某种形式的模板构造的子元素的ViewGroup。优选地,这可以在布局XML中指定。谁能指出你是怎么做到的?
是否有任何样本证明了这种行为?
我正在寻找与SL / WPF / WinRT ItemsControl中的DataTemplate类似的行为。
答案 0 :(得分:1)
我不确定你要做什么,但听起来你正在寻找一种显示项目列表的方法,其中每个项目都基于特定的布局?如果是这种情况,那么ListView类可能正是您正在寻找的。在Android中,列表中的每个项目都可以是任何视图,并且可以从代码或XML中定义的布局创建。 Xamarin有一些简单的列表示例here可以帮助您入门。
由于您想要更多地自定义列表项,您可能会发现自己想要创建自己的自定义列表适配器类而不是使用其中一个内置类。这可能看起来像这样,例如:
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]; }
}
}