Android 无法使用复选框从ListView中检索正确的值
我遇到了一个问题列表视图。列表中有一个复选框列表,我希望选中一个项目并将值传递给另一个活动。当我检查16到28的最后一项时,我什么也没有得到,但当我检查所有项目时,在这种情况下没有问题?有时我只得到5到10个第一元素 注意:列表大小是可变的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
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??你用什么代码来获取所有选中的项目?