因此,我一直在使用复选框的listview查看应用程序,我注意到当我选择一个项目时,当我向下滚动第一个项目时,在向下滚动完整页面后,也会选中该复选框。我有一种感觉,这是由于重新查看意见,但我很好奇这个解决方案。我曾尝试添加一个视图,但这并没有解决问题。只是想知道我错过了什么。代码适配器上的getview低于:带有复选框的列表视图正在检查多个复选框
public override Android.Views.View GetView(int position, Android.Views.View convertView, ViewGroup parent)
{
Android.Views.View view = convertView;
if (view == null)
{
view = context.LayoutInflater.Inflate(Resource.Layout.GroupTimeTrackerTemplate, parent, false);
}
tblWorkers item = this[position];
view.FindViewById<TextView>(Resource.Id.UserNameTextView).Text = this[position].nWorkerFirstname + " " + this[position].nWorkerLastname;
view.FindViewById<TextView>(Resource.Id.StatusTextView).Text = this[position].nStatusShort;
view.FindViewById<TextView>(Resource.Id.UserRoleTextView).Text = this[position].nTitle;
CheckBox chkSelect = view.FindViewById<CheckBox>(Resource.Id.ChkSelect);
chkSelect.Tag = item.nWorkerFirstname + " " + item.nWorkerLastname;
chkSelect.SetOnCheckedChangeListener(null);
chkSelect.SetOnCheckedChangeListener(new CheckChangeListener(this.context));
return view;
}
private class CheckChangeListener : Java.Lang.Object, CompoundButton.IOnCheckedChangeListener
{
private Activity activity;
public CheckChangeListener(Activity activity)
{
this.activity = activity;
}
public void OnCheckedChanged(CompoundButton buttonView, bool isChecked)
{
if (isChecked)
{
string name = (string)buttonView.Tag;
string text = string.Format("{0} Checked.", name);
Toast.MakeText(this.activity, text, ToastLength.Short).Show();
}
}
}
我已经做了Java和C#,他们都非常类似的,虽然Xamarin并不是很多例子。令人费解的是,我使用的是我传入的实际列表,这是ObervableCollection,所以位置不应该成为问题,但我想是的。你能举一个Java例子吗? – yams