在Android (c#)中加载对象到ListView
本文关键字:加载 对象 ListView Android | 更新日期: 2023-09-27 17:54:50
我希望在Android中使用ListView
来显示客户的详细信息,例如姓名,姓氏,地址等…
我声明了一个对象,看起来像;
public class CustomerModel
{
public int ID { get; set; }
public string Name { get; set; }
public string Netname { get; set; }
public string Initials { get; set; }
}
我一直在寻找示例(Xamarin示例)如何将c#/Android中的集合绑定到ListView
,用户可以点击查看有关Customer
的进一步详细信息,但到目前为止我没有运气。
在我的c#应用程序中,我使用了ObservableCollection
和DataGrid
,但我正在努力在Android中找到一个可行的等效(我对Android完全陌生)。
是否有一个等同的,我可以在我的Android应用程序中使用?
您需要创建一个扩展BaseAdapter
的适配器来保存数据并使用getView
方法返回每一行,在该方法中您将列表的每个值绑定到屏幕中的View。示例:
listView = FindViewById<ListView>(Resource.Id.List); // get reference to the ListView in the layout
// populate the listview with data
listView.Adapter = new HomeScreenAdapter(this, tableItems);
listView.ItemClick += OnListItemClick; // to be defined
适配器类:
public class HomeScreenAdapter : BaseAdapter<TableItem>
{
List<TableItem> items;
Activity context;
public HomeScreenAdapter(Activity context, List<TableItem> items)
: base()
{
this.context = context;
this.items = items;
}
public override long GetItemId(int position)
{
return position;
}
public override TableItem this[int position]
{
get { return items[position]; }
}
public override int Count
{
get { return items.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = items[position];
View view = convertView;
if (view == null) // no view to re-use, create new
view = context.LayoutInflater.Inflate(Resource.Layout.CustomView, null);
view.FindViewById<TextView>(Resource.Id.Text1).Text = item.Heading;
view.FindViewById<TextView>(Resource.Id.Text2).Text = item.SubHeading;
view.FindViewById<ImageView>(Resource.Id.Image).SetImageResource(item.ImageResourceId);
return view;
}
}
对于性能增强,请查看ViewHolder