Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何实现多选?勾选“;“所有文件”;从适配器中选择所有文件_C#_Android_Xamarin_Xamarin.android - Fatal编程技术网

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
您的问题没有什么意义,但您是否需要一个按钮,单击该按钮可更改所有复选框的选中状态?是的,请更正我想要的内容和完整的适配器代码!所有文件都在列表视图中吗?