C# 这个列表视图中发生了什么?

C# 这个列表视图中发生了什么?,c#,android,listview,C#,Android,Listview,我有一个列表视图,当我点击其中的一个项目时,会出现一个带有保存和删除按钮的对话框片段。一切正常,它会正确更新适配器,从ListView中删除或更新项。现在的问题是,当我删除最上面的项目,或者另一个项目上面的项目,但让我们只说有两个项目,因为它更容易。当我删除顶部项目时,它将从ListView中删除,但当我单击同一点时,因为底部项目现在向上移动到顶部,旧项目数据将显示在DialogFragment中。换句话说,我选择的是旧项目。代码如下: using Android.App; using Andr

我有一个列表视图,当我点击其中的一个项目时,会出现一个带有保存和删除按钮的对话框片段。一切正常,它会正确更新适配器,从ListView中删除或更新项。现在的问题是,当我删除最上面的项目,或者另一个项目上面的项目,但让我们只说有两个项目,因为它更容易。当我删除顶部项目时,它将从ListView中删除,但当我单击同一点时,因为底部项目现在向上移动到顶部,旧项目数据将显示在DialogFragment中。换句话说,我选择的是旧项目。代码如下:

using Android.App;
using Android.Content;
using Android.OS;
using Android.Views;
using Android.Widget;
using System;
using System.Collections.Generic;

namespace Zrelya.Fragments
{

    public class ViewPlans : FragmentSuper
    {
        private Context mContext;
        private ORM.DBRep dbr;

        private static Adapters.Plan Adapter;
        private static ListView listView;
        private static List<ORM.Plan> plansList = new List<ORM.Plan>();


        public ViewPlans(Context context)
        {
            mContext = context;
        }

        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your fragment here

            dbr = new ORM.DBRep();
        }

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            // Use this to return your custom view for this Fragment
            var view = inflater.Inflate(Resource.Layout.ViewPlans, container, false);
            listView = view.FindViewById<ListView>(Resource.Id.listView);

            plansList = dbr.GetPlans();
            Adapter = new Adapters.Plan(mContext, plansList);
            listView.Adapter = Adapter;

            listView.ItemClick += (o, e) =>
            {
                Activity.RunOnUiThread(()=> {
                    plansList = dbr.GetPlans();
                    DialogViewPlan(plansList[e.Position]);
                });

            };

            return view;
        }



        private void DialogViewPlan(ORM.Plan plan)
        {
            if (plan != null)
            {
                FragmentTransaction transaction = Activity.FragmentManager.BeginTransaction();
                Helpers.DialogViewPlan dialog = new Helpers.DialogViewPlan(Activity, plan);
                dialog.Show(transaction, "dialog");
                dialog.OnDelete += delegate
                {


                    Activity.RunOnUiThread(()=> {
                        plansList.Remove(plan);
                        Adapter = new Adapters.Plan(mContext, plansList);
                        Adapter.NotifyDataSetChanged();
                        listView.Adapter = Adapter;
                    });



                };
                dialog.OnSave += delegate
                {
                    Adapter = new Adapters.Plan(mContext, dbr.GetPlans());

                    Adapter.NotifyDataSetChanged();
                    listView.Adapter = Adapter;
                };

            }
        }
    }
} 
使用Android.App;
使用Android.Content;
使用Android.OS;
使用Android.Views;
使用Android.Widget;
使用制度;
使用System.Collections.Generic;
命名空间Zrelya.Fragments
{
公共类视图平面:FragmentSuper
{
私有上下文;
私有ORM.DBRep dbr;
私有静态适配器;
私有静态ListView ListView;
私有静态列表计划列表=新列表();
公共视图平面(上下文)
{
mContext=上下文;
}
创建时公共覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//在这里创建你的片段
dbr=新的ORM.DBRep();
}
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
//使用此选项可返回此片段的自定义视图
var视图=充气机。充气(Resource.Layout.ViewPlans,container,false);
listView=view.FindViewById(Resource.Id.listView);
plansList=dbr.GetPlans();
适配器=新适配器。计划(mContext,plansList);
Adapter=适配器;
listView.ItemClick+=(o,e)=>
{
Activity.RunOnUiThread(()=>{
plansList=dbr.GetPlans();
对话框视图平面(平面列表[e.位置]);
});
};
返回视图;
}
私有无效对话框ViewPlan(ORM.Plan)
{
如果(计划!=null)
{
FragmentTransaction=Activity.FragmentManager.BeginTransaction();
Helpers.DialogViewPlan dialog=新建Helpers.DialogViewPlan(活动,计划);
dialog.Show(事务,“dialog”);
dialog.OnDelete+=委托
{
Activity.RunOnUiThread(()=>{
平面列表。删除(平面);
适配器=新适配器。计划(mContext,plansList);
Adapter.NotifyDataSetChanged();
Adapter=适配器;
});
};
dialog.OnSave+=委托
{
Adapter=newadapters.Plan(mContext,dbr.GetPlans());
Adapter.NotifyDataSetChanged();
Adapter=适配器;
};
}
}
}
} 

通过几个链接提供帮助:

下面是经过修剪的代码,请尝试

using Android.App;
using Android.Content;
using Android.OS;
using Android.Views;
using Android.Widget;
using System;
using System.Collections.Generic;

namespace Zrelya.Fragments
{

    public class ViewPlans : FragmentSuper
    {
        private Context mContext;
        private ORM.DBRep dbr;

        private static Adapters.Plan Adapter;
        private static ListView listView;
        private static List<ORM.Plan> plansList = new List<ORM.Plan>();


        public ViewPlans(Context context)
        {
            mContext = context;
        }

        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your fragment here

            dbr = new ORM.DBRep();
        }

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            // Use this to return your custom view for this Fragment
            var view = inflater.Inflate(Resource.Layout.ViewPlans, container, false);
            listView = view.FindViewById<ListView>(Resource.Id.listView);

            plansList = dbr.GetPlans();
            Adapter = new Adapters.Plan(mContext, plansList);
            listView.Adapter = Adapter;

            listView.ItemClick += (o, e) =>
            {
                Activity.RunOnUiThread(()=> {
                    //plansList = dbr.GetPlans();
                    DialogViewPlan(plansList[e.Position]);
                });

            };

            return view;
        }



        private void DialogViewPlan(ORM.Plan plan)
        {
            if (plan != null)
            {
                FragmentTransaction transaction = Activity.FragmentManager.BeginTransaction();
                Helpers.DialogViewPlan dialog = new Helpers.DialogViewPlan(Activity, plan);
                dialog.Show(transaction, "dialog");
                dialog.OnDelete += delegate
                {


                    Activity.RunOnUiThread(()=> {
                        plansList.Remove(plan);
                        //Adapter = new Adapters.Plan(mContext, plansList);
                        Adapter.NotifyDataSetChanged();
                        //listView.Adapter = Adapter;
                    });



                };
                dialog.OnSave += delegate
                {
                    //Adapter = new Adapters.Plan(mContext, dbr.GetPlans());

                    Adapter.NotifyDataSetChanged();
                    //listView.Adapter = Adapter;
                };

            }
        }
    }
} 
使用Android.App;
使用Android.Content;
使用Android.OS;
使用Android.Views;
使用Android.Widget;
使用制度;
使用System.Collections.Generic;
命名空间Zrelya.Fragments
{
公共类视图平面:FragmentSuper
{
私有上下文;
私有ORM.DBRep dbr;
私有静态适配器;
私有静态ListView ListView;
私有静态列表计划列表=新列表();
公共视图平面(上下文)
{
mContext=上下文;
}
创建时公共覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//在这里创建你的片段
dbr=新的ORM.DBRep();
}
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
//使用此选项可返回此片段的自定义视图
var视图=充气机。充气(Resource.Layout.ViewPlans,container,false);
listView=view.FindViewById(Resource.Id.listView);
plansList=dbr.GetPlans();
适配器=新适配器。计划(mContext,plansList);
Adapter=适配器;
listView.ItemClick+=(o,e)=>
{
Activity.RunOnUiThread(()=>{
//plansList=dbr.GetPlans();
对话框视图平面(平面列表[e.位置]);
});
};
返回视图;
}
私有无效对话框ViewPlan(ORM.Plan)
{
如果(计划!=null)
{
FragmentTransaction=Activity.FragmentManager.BeginTransaction();
Helpers.DialogViewPlan dialog=新建Helpers.DialogViewPlan(活动,计划);
dialog.Show(事务,“dialog”);
dialog.OnDelete+=委托
{
Activity.RunOnUiThread(()=>{
平面列表。删除(平面);
//适配器=新适配器。计划(mContext,plansList);
Adapter.NotifyDataSetChanged();
//Adapter=适配器;
});
};
dialog.OnSave+=委托
{
//Adapter=newadapters.Plan(mContext,dbr.GetPlans());
Adapter.NotifyDataSetChanged();
//Adapter=适配器;
};
}
}
}
} 

在这一行
Adapter=newadapters.Plan(mContext,dbr.GetPlans())
是否确定
GetPlans()
返回除所选计划之外的所有计划