C# 如何实现多选?勾选“;“所有文件”;从适配器中选择所有文件
选中复选框中的“选择所有文件”,以选中适配器中的所有复选框C# 如何实现多选?勾选“;“所有文件”;从适配器中选择所有文件,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,选中复选框中的“选择所有文件”,以选中适配器中的所有复选框 public override View GetView(int position, View convertView, ViewGroup parent) { var item = items[position]; View view = convertView; view = context.LayoutInflater.Inflate(Resource.Layout.Sto
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = items[position];
View view = convertView;
view = context.LayoutInflater.Inflate(Resource.Layout.StockTakeUploadAdapter, null);
view.DuplicateParentStateEnabled = true;
createdview.Add(view);
CheckBox chkBoxFileName = view.FindViewById<CheckBox>(Resource.Id.chkBoxFileName);
chkBoxFileName.Tag = position;
chkBoxFileName.SetOnCheckedChangeListener(this);
view.FindViewById<TextView>(Resource.Id.lblFileName).Text = item.ST_filename.ToString();
view.FindViewById<TextView>(Resource.Id.lblFileStatus).Text = item.ST_UploadStatus.ToString();
if (!view.HasOnClickListeners)
view.Click += View_LongClick;
view.RefreshDrawableState();
return view;
}
public override View GetView(int位置、视图转换视图、视图组父视图)
{
var项目=项目[位置];
视图=转换视图;
视图=context.LayoutInflater.Inflate(Resource.Layout.StockTakeUploadAdapter,null);
view.DuplicateParentStateEnabled=true;
createdview.Add(视图);
复选框chkBoxFileName=view.findviewbyd(Resource.Id.chkBoxFileName);
chkBoxFileName.Tag=位置;
chkBoxFileName.SetOnCheckedChangeListener(此);
view.findviewbyd(Resource.Id.lblFileName).Text=item.ST_filename.ToString();
view.findviewbyd(Resource.Id.lblFileStatus).Text=item.ST_UploadStatus.ToString();
如果(!view.HasOnClickListeners)
查看。单击+=查看\u长单击;
view.RefreshDrawableState();
返回视图;
}
单击复选框“全选”时,适配器可以选择适配器中的所有记录。
你可以这样做,
在您的活动中:
CheckBox selectAll = FindViewById<CheckBox>(Resource.Id.button1);
selectAll.SetOnCheckedChangeListener(this);
public void OnCheckedChanged(CompoundButton buttonView, bool isChecked)
{
adapter.SelectAll(isChecked);
}
复选框selectAll=findviewbyd(Resource.Id.button1);
选择All.SetOnCheckedChangeListener(此选项);
检查更改后的公共无效(复合按钮视图,布尔已检查)
{
适配器。选择全部(已选中);
}
在适配器中,使用集合保存状态:
private Dictionary<int, bool> checkBoxStatus = new Dictionary<int, bool>();
public MyAdapter(int[] value)//in your constructor, it will be instantiated
{
item = value;
for (int i = 0; i < item.Length; i++)
{
checkBoxStatus.Add(i,false);
}
}
public void SelectAll(bool isChecked)
{
for (int i = 0; i < item.Length; i++)
{
checkBoxStatus[i]= isChecked;
}
NotifyDataSetChanged();
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = items[position];
View view = convertView;
view = context.LayoutInflater.Inflate(Resource.Layout.StockTakeUploadAdapter, null);
view.DuplicateParentStateEnabled = true;
createdview.Add(view);
CheckBox chkBoxFileName = view.FindViewById<CheckBox>(Resource.Id.chkBoxFileName);
chkBoxFileName .Checked = checkBoxStatus[position];
chkBoxFileName.Tag = position;
chkBoxFileName.SetOnCheckedChangeListener(this);
view.FindViewById<TextView>(Resource.Id.lblFileName).Text = item.ST_filename.ToString();
view.FindViewById<TextView>(Resource.Id.lblFileStatus).Text = item.ST_UploadStatus.ToString();
if (!view.HasOnClickListeners)
view.Click += View_LongClick;
view.RefreshDrawableState();
return view;
}
public void OnCheckedChanged(CompoundButton buttonView, bool isChecked)
{
checkBoxStatus[(int) buttonView.Tag]= isChecked;
NotifyDataSetChanged();
}
private Dictionary checkBoxStatus=new Dictionary();
publicMyAdapter(int[]值)//在构造函数中,它将被实例化
{
项目=价值;
for(int i=0;i
您的问题没有什么意义,但您是否需要一个按钮,单击该按钮可更改所有复选框的选中状态?是的,请更正我想要的内容和完整的适配器代码!所有文件都在列表视图中吗?