ListView
в экземпляре Android требует Adapter
для использования данных, содержащихся в представлениях строк.
Добавьте один элемент управления ListView и один элемент управления TextView для отображения списка элементов и элементов соответственно.Используйте следующий код.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#6BC6ED"
>
<TextView
android:id="@+id/Name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25dp"
android:textColor="#FFFFFF"
/>
<ListView
android:id="@+id/demolist"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
Подобно тому, что мы делали в Forms, создайте новый класс модели, который содержит свойство привязки в ViewCell.
Например,
public class Students {
public string Name {
get;
set;
}
public int Age {
get;
set;
}
}
Далее необходимо создать адаптер для привязки данных к ListView.В Android имеется встроенный базовый класс адаптера для реализаций адаптера, который связывает ListView с источником данных.Кроме того, мы можем получить позицию элемента, количество и выбранный элемент и т. Д. Там.Метод Count используется для получения количества строк в списке.
Метод GetView используется для возврата View для каждой строки, заполненной каким элементом.
Метод GetItemId используется для возврата строкисвойства данных, такие как номер строки и значение.
public class StudentAdapter: BaseAdapter < Students > {
public List < Students > sList;
private Context sContext;
public StudentAdapter(Context context, List < Students > list) {
sList = list;
sContext = context;
}
public override Students this[int position] {
get {
return sList[position];
}
}
public override int Count {
get {
return sList.Count;
}
}
public override long GetItemId(int position) {
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent) {
View row = convertView;
try {
if (row == null) {
row = LayoutInflater.From(sContext).Inflate(Resource.Layout.Main, null, false);
}
TextView txtName = row.FindViewById < TextView > (Resource.Id.Name);
txtName.Text = sList[position].Name;
} catch (Exception ex) {
System.Diagnostics.Debug.WriteLine(ex.Message);
} finally {}
return row;
}
}
Далее откройте файл активности и напишите приведенный ниже код, чтобы создать список элементов для отображения ListView и отображения выбранных элементов из списка.
private ListView studentlistView;
private List < Students > mlist;
StudentAdapter adapter;
protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
List < Students > objstud = new List < Students > ();
objstud.Add(new Students {
Name = "Jack", Age = 26
});
objstud.Add(new Students {
Name = "Mary", Age = 26
});
studentlistView = FindViewById < ListView > (Resource.Id.demolist);
mlist = new List < Students > ();
mlist = objstud;
adapter = new StudentAdapter(this, mlist);
studentlistView.Adapter = adapter;
studentlistView.ItemClick += StudentlistView_ItemClick;
}
Для обработки выбранных элементов, напишите следующий код.
private void StudentlistView_ItemClick(object sender, AdapterView.ItemClickEventArgs e) {
var select = mlist[e.Position].Name;
Android.Widget.Toast.MakeText(this, select, Android.Widget.ToastLength.Long).Show();
}
Для более подробной информации вы можете проверить здесь .