behält Ich habe eine Listenansicht von Studenten mit einem Schalter und Kontrollkästchen für jede Zeile Element für Studenten Teilnahme. Ich möchte die Schalterbox und die Kontrollkästchen während des Scrollens beibehalten. Ich habe versucht, auf diese Weise aber war erfolglos:Wie man den Status der Checkbox auf der Scroll von Listview in Android
AttendanceCreateNewAdapter.cs hat Code
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
// re-use an existing view, if one is available
// otherwise create a new one
if (view == null)
{
view = activityContext.LayoutInflater.Inflate(Resource.Layout.AttendanceCreatenewRowlistLayout, parent, false);
view.SetTag((Int32)position, view);
}
// initialize size for checkbox and switch box states
checkBoxState = new bool[Count];
switchBoxState = new bool[Count];
item = this[position];
view.FindViewById<TextView>(Resource.Id.student_name).Text = item.StudentName;
view.FindViewById<TextView>(Resource.Id.date).Text = GetCustomDateTime(item.Date);
checkBoxLeave = view.FindViewById<CheckBox>(Resource.Id.on_leave);
switchPresentAbsent = view.FindViewById<Switch>(Resource.Id.present_absent_switch);
checkBoxLeave.Tag = position;
switchPresentAbsent.Tag = position;
checkBoxLeave.SetOnCheckedChangeListener(null);
switchPresentAbsent.SetOnCheckedChangeListener(null);
switchBoxState[position] = item.Present;
checkBoxState[position] = item.Leave;
checkBoxLeave.Checked = checkBoxState[position];
switchPresentAbsent.Checked = switchBoxState[position];
checkBoxLeave.CheckedChange += delegate (object sender, CompoundButton.CheckedChangeEventArgs e)
{
CompoundButton buttonView = sender as CompoundButton;
if (e.IsChecked)
{
int itemPosition = (int)buttonView.Tag;
UpdateAdapterList(itemPosition, false, true);
}
};
return view;
}
private void UpdateAdapterList(int myPosition, bool leave, bool present)
{
NewAttendanceStudent newItem = this[myPosition];
var attendanceTaken = new NewAttendanceStudent
{
StudentName = newItem.StudentName,
SectionId = newItem.SectionId,
ClassId = newItem.ClassId,
RollNumber = newItem.RollNumber,
Leave = leave,
Present = present,
Date = newItem.Date,
};
newAttendanceStudentList.Insert(myPosition,attendanceTaken);
}
danken Ihnen folgenden Teil.
Bitte beachten Sie den Link https://stackoverflow.com/questions/16350670/listview-viewholder-checkbox-state –