下面是适配器类中的GetView()
方法,当我通过选择一个复选框滚动列表视图时。滚动回初始位置后,复选框将取消选中。
public override View GetView (int position, View convertView, ViewGroup parent)
{
View view = convertView;
var item = mMyList [position];
//View holder
MyViewHolder holder = null;
if (view == null) {
holder = new MyViewHolder ();
view = mcontext.LayoutInflater.Inflate (Resource.Layout.listview_layout, null);
holder.mChecked = view.FindViewById<CheckBox> (Resource.Id.chkBox);
holder.Name = view.FindViewById<TextView> (Resource.Id.Name);
holder.StartDate = view.FindViewById<TextView> (Resource.Id.startDate);
holder.EndDate = view.FindViewById<TextView> (Resource.Id.endDate);
holder.Desc = view.FindViewById<TextView> (Resource.Id.Desc);
view.SetTag (holder);
} else {
holder = (MyViewHolder)view.Tag;
}
holder.Name.SetText (item.Name, TextView.BufferType.Normal);
holder.StartDate.SetText (item.StartDate, TextView.BufferType.Normal);
holder.EndDate.SetText (item.EndDate, TextView.BufferType.Normal);
holder.Desc.SetText (item.Description, TextView.BufferType.Normal);
return view;
}
答案 0 :(得分:1)
很简单!
你只需要存储这个&#34;状态&#34;复选框,因为每次滚动 listview 时,都会调用GetView方法(绘制隐藏项,Android重用行)。
在您的DataContext中,例如列表与LT;的 MyClass的强>&GT; ,MyClass代表的地方:
public class MyClass
{
public string Name {get;set;}
public string SecondName {get;set;}
public bool IsChecked {get;set;}
}
尝试为Checkbox的状态添加bool属性(在本例中为 IsChecked )。
在此之后,在您的GetView 方法中写下以下内容:
holder.mChecked.Checked = MyList [position].#YourBoolProperty#;