C# 为什么显示2个对话框片段?
我有一些代码,通过编程为每个列表视图添加ListView和create按钮,为列表视图创建新项目,每个项目都有一个click事件,显示一个带有delete按钮的对话框片段。它可以工作,但是对于“星期一”适配器,它显示2个对话框片段,星期二只显示一个,因此星期二可以正常工作。看一看:C# 为什么显示2个对话框片段?,c#,android,listview,android-fragments,C#,Android,Listview,Android Fragments,我有一些代码,通过编程为每个列表视图添加ListView和create按钮,为列表视图创建新项目,每个项目都有一个click事件,显示一个带有delete按钮的对话框片段。它可以工作,但是对于“星期一”适配器,它显示2个对话框片段,星期二只显示一个,因此星期二可以正常工作。看一看: private void InitializeExercisesForDay(string day, View view) { /* * Basic start
private void InitializeExercisesForDay(string day, View view)
{
/*
* Basic start
* */
LinearLayout layout = view.FindViewById<LinearLayout>(Resource.Id.linearLayoutCreatePlan);
TextView text = new TextView(Activity);
text.SetTextColor(Resources.GetColor(Resource.Color.lightGreen));
text.Text = day;
layout.AddView(text);
Button buttonAddExercise = new Button(Activity)
{
Text = "Add Exercise"
};
layout.AddView(buttonAddExercise);
/*
* Basic End */
switch (day)
{
case "Monday":
ListViewMonday = new ListView(Activity);
MondayExerciseList = new List<Exercise>();
MondayAdapter = new Adapters.Exercise(Activity, MondayExerciseList);
ListViewMonday.Adapter = MondayAdapter;
layout.AddView(ListViewMonday);
break;
case "Tuesday":
ListViewTuesday = new ListView(Activity);
TuesdayExerciseList = new List<Exercise>();
TuesdayAdapter = new Adapters.Exercise(Activity, TuesdayExerciseList);
ListViewTuesday.Adapter = TuesdayAdapter;
layout.AddView(ListViewTuesday);
break;
}
buttonAddExercise.Click += delegate
{
FragmentTransaction transaction = Activity.FragmentManager.BeginTransaction();
Helpers.DialogViewExercises dialog = new Helpers.DialogViewExercises(Activity);
dialog.Show(transaction, "dialog");
dialog.OnExerciseSelected += (o, e) =>
{
var exercise = e.Exercise;
switch (day)
{
case "Monday":
MondayExerciseList.Add(exercise);
MondayAdapter = new Adapters.Exercise(Activity, MondayExerciseList);
Activity.RunOnUiThread(() => { MondayAdapter.NotifyDataSetChanged(); });
ListViewMonday.Adapter = MondayAdapter;
if (ListViewMonday != null)
{
var parameters = GetListViewParameters(ListViewMonday, MondayAdapter);
ListViewMonday.LayoutParameters = parameters;
}
break;
case "Tuesday":
TuesdayExerciseList.Add(exercise);
TuesdayAdapter = new Adapters.Exercise(Activity, TuesdayExerciseList);
Activity.RunOnUiThread(() => { TuesdayAdapter.NotifyDataSetChanged(); });
ListViewTuesday.Adapter = TuesdayAdapter;
if (ListViewTuesday != null)
{
var parameters = GetListViewParameters(ListViewTuesday, TuesdayAdapter);
ListViewTuesday.LayoutParameters = parameters;
}
break;
}
};
};
if (ListViewMonday != null)
{
ListViewMonday.ItemClick += ListViewMonday_ItemClick;
return;
}
if (ListViewTuesday != null)
{
ListViewTuesday.ItemClick += ListViewTuesday_ItemClick;
return;
}
}
private void ListViewTuesday_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
var exercise = TuesdayExerciseList[e.Position];
FragmentTransaction transaction = Activity.FragmentManager.BeginTransaction();
Helpers.DialogViewExerciseInPlan dialog = new Helpers.DialogViewExerciseInPlan(exercise);
dialog.Show(transaction, "dialog");
dialog.OnDelete += delegate
{
TuesdayExerciseList.Remove(exercise);
TuesdayAdapter = new Adapters.Exercise(Activity, TuesdayExerciseList);
Activity.RunOnUiThread(() => { TuesdayAdapter.NotifyDataSetChanged(); });
ListViewTuesday.Adapter = TuesdayAdapter;
if (ListViewTuesday != null)
{
var parameters = GetListViewParameters(ListViewTuesday, TuesdayAdapter);
ListViewTuesday.LayoutParameters = parameters;
}
};
}
private void ListViewMonday_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
var exercise = MondayExerciseList[e.Position];
FragmentTransaction transaction = Activity.FragmentManager.BeginTransaction();
Helpers.DialogViewExerciseInPlan dialog = new Helpers.DialogViewExerciseInPlan(exercise);
dialog.Show(transaction, "dialog");
dialog.OnDelete += delegate
{
MondayExerciseList.Remove(exercise);
MondayAdapter = new Adapters.Exercise(Activity, MondayExerciseList);
Activity.RunOnUiThread(() => { MondayAdapter.NotifyDataSetChanged(); });
ListViewMonday.Adapter = MondayAdapter;
if (ListViewMonday != null)
{
var parameters = GetListViewParameters(ListViewMonday, MondayAdapter);
ListViewMonday.LayoutParameters = parameters;
}
};
}
private void InitializeExercisesForDay(字符串日,视图)
{
/*
*基本起点
* */
LinearLayout布局=view.FindViewById(Resource.Id.LinearLayout平面图);
TextView text=新的TextView(活动);
text.SetTextColor(Resources.GetColor(Resource.Color.lightGreen));
text.text=天;
布局。添加视图(文本);
Button Button Dexercise=新按钮(活动)
{
Text=“添加练习”
};
布局。添加视图(按钮和索引);
/*
*基本端*/
开关(日)
{
案件“星期一”:
ListViewMonday=新建ListView(活动);
MondayExerciseList=新列表();
MondayAdapter=新适配器。练习(活动,MondayExerciseList);
ListViewMonday.Adapter=MondayAdapter;
layout.AddView(ListViewMonday);
打破
案件“星期二”:
ListView星期二=新的ListView(活动);
周二练习列表=新列表();
TuesdayAdapter=新适配器。练习(活动,TuesdayExerciseList);
ListViewTuesday.Adapter=TuesdayAdapter;
layout.AddView(ListView星期二);
打破
}
按钮dexercise.单击+=委派
{
FragmentTransaction=Activity.FragmentManager.BeginTransaction();
Helpers.DialogViewExercises对话框=新建Helpers.DialogViewExercises(活动);
dialog.Show(事务,“dialog”);
dialog.OnExerciseSelected+=(o,e)=>
{
var演习=e.演习;
开关(日)
{
案件“星期一”:
星期一练习表。添加(练习);
MondayAdapter=新适配器。练习(活动,MondayExerciseList);
Activity.RunOnUiThread(()=>{mondayadadapter.NotifyDataSetChanged();});
ListViewMonday.Adapter=MondayAdapter;
如果(ListViewMonday!=null)
{
var parameters=GetListViewParameters(ListViewMonday、MondayAdapter);
ListViewMonday.LayoutParameters=参数;
}
打破
案件“星期二”:
星期二练习表。添加(练习);
TuesdayAdapter=新适配器。练习(活动,TuesdayExerciseList);
Activity.RunOnUiThread(()=>{tuesdayadadapter.NotifyDataSetChanged();});
ListViewTuesday.Adapter=TuesdayAdapter;
如果(ListView星期二!=null)
{
var parameters=GetListViewParameters(ListView周二、周二适配器);
ListViewTuesday.LayoutParameters=参数;
}
打破
}
};
};
如果(ListViewMonday!=null)
{
ListViewMonday.ItemClick+=ListViewMonday\u ItemClick;
返回;
}
如果(ListView星期二!=null)
{
ListViewTuesday.ItemClick+=ListViewTuesday\u ItemClick;
返回;
}
}
私有无效列表视图星期二\u项目单击(对象发送者,AdapterView.ItemClickEventArgs e)
{
var练习=周二练习表[e.位置];
FragmentTransaction=Activity.FragmentManager.BeginTransaction();
Helpers.DialogViewExecuteInPlan对话框=新的Helpers.DialogViewExecuteInPlan(练习);
dialog.Show(事务,“dialog”);
dialog.OnDelete+=委托
{
星期二练习表。删除(练习);
TuesdayAdapter=新适配器。练习(活动,TuesdayExerciseList);
Activity.RunOnUiThread(()=>{tuesdayadadapter.NotifyDataSetChanged();});
ListViewTuesday.Adapter=TuesdayAdapter;
如果(ListView星期二!=null)
{
var parameters=GetListViewParameters(ListView周二、周二适配器);
ListViewTuesday.LayoutParameters=参数;
}
};
}
private void ListViewMonday\u ItemClick(对象发送者,AdapterView.ItemClickEventArgs e)
{
var练习=周一练习列表[e.位置];
FragmentTransaction=Activity.FragmentManager.BeginTransaction();
Helpers.DialogViewExecuteInPlan对话框=新的Helpers.DialogViewExecuteInPlan(练习);
dialog.Show(事务,“dialog”);
dialog.OnDelete+=委托
{
周一练习列表。删除(练习);
MondayAdapter=新适配器。练习(活动,MondayExerciseList);
Activity.RunOnUiThread(()=>{mondayadadapter.NotifyDataSetChanged();});
ListViewMonday.Adapter=MondayAdapter;
如果(ListViewMonday!=null)
{
var parameters=GetListViewParameters(ListViewMonday、MondayAdapter);
ListViewMonday.LayoutParameters=参数;
}
};
}
找到了答案。click事件必须在switch语句中,但我不知道为什么。有人知道吗
switch (day)
{
case "Monday":
ListViewMonday = new ListView(Activity);
MondayExerciseList = new List<Exercise>();
MondayAdapter = new Adapters.Exercise(Activity, MondayExerciseList);
ListViewMonday.Adapter = MondayAdapter;
layout.AddView(ListViewMonday);
ListViewMonday.ItemClick += ListViewMonday_ItemClick;
break;
case "Tuesday":
ListViewTuesday = new ListView(Activity);
TuesdayExerciseList = new List<Exercise>();
TuesdayAdapter = new Adapters.Exercise(Activity, TuesdayExerciseList);
ListViewTuesday.Adapter = TuesdayAdapter;
layout.AddView(ListViewTuesday);
ListViewTuesday.ItemClick += ListViewTuesday_ItemClick;
break;
case "Wednesday":
ListViewWednesday = new ListView(Activity);
WednesdayExerciseList = new List<Exercise>();
WednesdayAdapter = new Adapters.Exercise(Activity, WednesdayExerciseList);
ListViewWednesday.Adapter = WednesdayAdapter;
layout.AddView(ListViewWednesday);
ListViewWednesday.ItemClick += ListViewWednesday_ItemClick;
break;
}
开关(日)
{
案件“星期一”:
ListViewMonday=新建ListView(活动);
M