在 Xamarin.Android 中更新 ListView
Updating ListView in Xamarin.Android
我有一个 ListView 适配器,每当我单击一个项目时,都会显示一个警告对话框。 “Löschen”(德语为删除)按钮删除了列表中的项目,但列表视图未更新。
这是我苦苦挣扎的代码:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.ArbZListe);
ArbZList = (ListView)FindViewById<ListView>(Resource.Id.ArbZListview);
ArbZList.Adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, MainActivity.Arbeitstage);
ArbZList.ItemClick += ArbZList_ItemClick;
}
void ArbZList_ItemClick(object s, AdapterView.ItemClickEventArgs e)
{
try
{
var t = MainActivity.Arbeitstage[e.Position];
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
AlertDialog alert = dialog.Create();
alert.SetTitle("Wollen sie den Eintrag bearbeiten?");
alert.SetMessage(t);
alert.SetButton("Bearbeiten", AlertBearbeitenClick);
alert.SetButton2("Löschen", (c, dcea) =>
{
//Delete task
RemoveItemAt(e.Position);
});
alert.Show();
}
catch (ArgumentOutOfRangeException)
{
}
//List should be refreshed here!
}
我什至没有使用基本方法(添加 ListView 项)...我缺少什么?
您可以通过 adapter.Remove()
方法执行以下操作:
ArrayAdapter adapter;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.ArbZListe);
ArbZList = (ListView)FindViewById<ListView>(Resource.Id.ArbZListview);
adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, MainActivity.Arbeitstage);
ArbZList.Adapter = adapter;
ArbZList.ItemClick += ArbZList_ItemClick;
}
void ArbZList_ItemClick(object s, AdapterView.ItemClickEventArgs e)
{
try
{
var t = MainActivity.Arbeitstage[e.Position];
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
AlertDialog alert = dialog.Create();
alert.SetTitle("Wollen sie den Eintrag bearbeiten?");
alert.SetMessage(t);
alert.SetButton("Bearbeiten", AlertBearbeitenClick);
alert.SetButton2("Löschen", (c, dcea) =>
{
//Delete task
adapter.Remove(t);
});
alert.Show();
}
catch (ArgumentOutOfRangeException)
{
}
//List should be refreshed here!
}
我有一个 ListView 适配器,每当我单击一个项目时,都会显示一个警告对话框。 “Löschen”(德语为删除)按钮删除了列表中的项目,但列表视图未更新。
这是我苦苦挣扎的代码:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.ArbZListe);
ArbZList = (ListView)FindViewById<ListView>(Resource.Id.ArbZListview);
ArbZList.Adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, MainActivity.Arbeitstage);
ArbZList.ItemClick += ArbZList_ItemClick;
}
void ArbZList_ItemClick(object s, AdapterView.ItemClickEventArgs e)
{
try
{
var t = MainActivity.Arbeitstage[e.Position];
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
AlertDialog alert = dialog.Create();
alert.SetTitle("Wollen sie den Eintrag bearbeiten?");
alert.SetMessage(t);
alert.SetButton("Bearbeiten", AlertBearbeitenClick);
alert.SetButton2("Löschen", (c, dcea) =>
{
//Delete task
RemoveItemAt(e.Position);
});
alert.Show();
}
catch (ArgumentOutOfRangeException)
{
}
//List should be refreshed here!
}
我什至没有使用基本方法(添加 ListView 项)...我缺少什么?
您可以通过 adapter.Remove()
方法执行以下操作:
ArrayAdapter adapter;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.ArbZListe);
ArbZList = (ListView)FindViewById<ListView>(Resource.Id.ArbZListview);
adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, MainActivity.Arbeitstage);
ArbZList.Adapter = adapter;
ArbZList.ItemClick += ArbZList_ItemClick;
}
void ArbZList_ItemClick(object s, AdapterView.ItemClickEventArgs e)
{
try
{
var t = MainActivity.Arbeitstage[e.Position];
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
AlertDialog alert = dialog.Create();
alert.SetTitle("Wollen sie den Eintrag bearbeiten?");
alert.SetMessage(t);
alert.SetButton("Bearbeiten", AlertBearbeitenClick);
alert.SetButton2("Löschen", (c, dcea) =>
{
//Delete task
adapter.Remove(t);
});
alert.Show();
}
catch (ArgumentOutOfRangeException)
{
}
//List should be refreshed here!
}