Android 无法使用复选框从ListView中检索正确的值

Android 无法使用复选框从ListView中检索正确的值,android,android-listview,android-checkbox,Android,Android Listview,Android Checkbox,我遇到了一个问题‍列表视图。列表中有一个复选框列表,我希望选中一个项目并将值传递给另一个活动。当我检查16到28的最后一项时,我什么也没有得到,但当我检查所有项目时,在这种情况下没有问题?有时我只得到5到10个第一元素 注意:列表大小是可变的 SparseBooleanArray mCheckStates; Context context; List<File> objects ; public CustomList(Context paramContex

我遇到了一个问题‍列表视图。列表中有一个复选框列表,我希望选中一个项目并将值传递给另一个活动。当我检查16到28的最后一项时,我什么也没有得到,但当我检查所有项目时,在这种情况下没有问题?有时我只得到5到10个第一元素

注意:列表大小是可变的

    SparseBooleanArray mCheckStates;  

  Context context;
  List<File> objects ;

  public CustomList(Context paramContext, int paramInt, List<File> paramList )
  {
    super(paramContext, 0, paramList);
    this.context = paramContext;
    this.objects = paramList;

    mCheckStates = new SparseBooleanArray(
            objects.size()); 


  }

     @Override
      public View getView(int paramInt, View paramView, ViewGroup paramViewGroup)         
      {
          View row = paramView;
          ViewHolder holder= null;
          if (row == null) {
              LayoutInflater vi = (LayoutInflater) context
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                       row = vi.inflate(R.layout.itemcheck, null);

                holder = new ViewHolder();

                holder.CheckName = (CheckBox) row.findViewById(R.id.checkbox_android);
                holder.FileName = (TextView) row.findViewById(R.id.textView1);

                row.setTag(holder);


          }
          else
          {
              holder = (ViewHolder)row.getTag();
          }

          holder.FileName.setText(((File)this.objects.get(paramInt)).getName());

          Toast.makeText(context, ""+ ((File)this.objects.get(paramInt)).getName(), 300).show();


          holder.CheckName.setTag(paramInt);
          holder.CheckName.setChecked(mCheckStates.get(paramInt, false));
          holder.CheckName.setOnCheckedChangeListener(this); 

        return row;
      }
      private class ViewHolder
        {
            TextView FileName;
            CheckBox CheckName;

        }


      public boolean isChecked(int position) {
          return mCheckStates.get(position, false);
      }

      public void setChecked(int position, boolean isChecked) {
          mCheckStates.put(position, isChecked);
          notifyDataSetChanged();

      }

      public void toggle(int position) {
          setChecked(position, !isChecked(position));

      }
    @Override
    public void onCheckedChanged(CompoundButton buttonView,
          boolean isChecked) {

       mCheckStates.put((Integer) buttonView.getTag(), isChecked);  

    }

    }

我建议您使用ImageView而不是复选框,并在单击ImageView时将回调添加到您的类中。我不理解您的方法,您可以告诉我如何做到这一点!尝试将此行放入holder.CheckName.setTagparamInt;此行前面的row.setTagholder@Ikshvaku的Scion??你用什么代码来获取所有选中的项目?