Я хочу, чтобы метод click вызывался только один раз, что я могу получить, чтобы получить этот результат? вот мой код:Нажмите Метод внутри Getview Вызывается несколько раз
public override View GetView(int position, View convertView, ViewGroup parent)
{
View result = convertView;
if (result == null)
{
result = LayoutInflater.From(_Context).Inflate(Resource.Layout.DiagnoseTemplateLayout, null, false);
}
TextView textView = result.FindViewById<TextView>(Resource.Id.DiagnoseTemplateTextView);
textView.Text = _Diagnoses[position].Description;
Button button = result.FindViewById<Button>(Resource.Id.DeleteDiagnoseTemplateButton);
button.Tag = _Diagnoses[position].Key;
button.Click += delegate
{
if (_Diagnoses[position] != null)
{
AlertDialog.Builder builder = new AlertDialog.Builder(_Context);
builder.SetTitle("Varning");
builder.SetMessage("Delating selected item?");
builder.SetPositiveButton("YES", delegate
{
SuperBillAddActivity.SuperBill.Diagnoses.Remove(_Diagnoses[position]);
SuperBillAddActivity.RefreshLists();
});
builder.SetNegativeButton("NO", delegate { });
builder.Show();
}
};
return result;
}
Этот метод вызывается 3 раза button.Click + = Делегат , начиная с позиции, с которой находится кнопка, которую мы нажали
public override View GetView(int position, View convertView, ViewGroup parent)
{
View result = convertView;
if (result == null)
{
result = LayoutInflater.From(_Context).Inflate(Resource.Layout.DiagnoseTemplateLayout, null, false);
}
TextView textView = result.FindViewById<TextView>(Resource.Id.DiagnoseTemplateTextView);
textView.Text = _Diagnoses[position].Description;
Button button = result.FindViewById<Button>(Resource.Id.DeleteDiagnoseTemplateButton);
button.Tag = _Diagnoses[position].Key;
button.Click += delegate
{
if ((_Clicked) && (_Diagnoses[position] != null))
{
_Clicked = !_Clicked;
AlertDialog.Builder builder = new AlertDialog.Builder(_Context);
builder.SetTitle("Varning");
builder.SetMessage("Delating selected item?");
builder.SetPositiveButton("YES", delegate
{
_Clicked = !_Clicked;
SuperBillAddActivity.SuperBill.Diagnoses.Remove(_Diagnoses[position]);
SuperBillAddActivity.RefreshLists();
});
builder.SetNegativeButton("NO", delegate
{
_Clicked = !_Clicked;
});
builder.Show();
}
};
return result;
}
< _Clicked - Я реализовал это и сейчас проблема решена, но мне не нравится этот способ ввода кода. есть ли альтернатива этому? также меня интересует, почему первый код работал так, как он.
я мой ответ ниже помог пожалуйста, вы можете пометить его как правильно? Я ценю. – jzeferino