在 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!
}