简体   繁体   English

更新 Xamarin.Android 中的 ListView

[英]Updating ListView in Xamarin.Android

I have a ListView Adapter and whenever i click an Item, an Alert Dialog is shown.我有一个 ListView 适配器,每当我单击一个项目时,都会显示一个警报对话框。 The "Löschen" (Delete in German) Button deletes the Item in the List, but somehow the Listview is not Updated. “Löschen”(德语中的删除)按钮删除列表中的项目,但不知何故列表视图未更新。

here is the Code where i am struggling:这是我正在努力的代码:

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

I didn't even get the basic approach working (add a ListView Item)... What am i missing?我什至没有得到基本方法的工作(添加一个 ListView 项)......我错过了什么?

You could do like below through the adapter.Remove() method:您可以通过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!
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM