我使用 ListActivity 创建带有复选框的行。
在最初创建列表后,如何一次性清除或选择所有框?
在 getView 中创建期间,我只有一行:
holder.checkbox.setChecked(false);
但是在 getView 之外创建所有显示的行后,如何访问它们?
这就是我创建每一行的方式:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.rowbuttonlayout, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView) view.findViewById(R.id.label);
viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
XXX element = (XXX) viewHolder.checkbox.getTag();
element.selectedFlag = buttonView.isChecked() ? Constants.STATUS_SELECTED
: Constants.STATUS_UNSELECTED;
}
});
view.setTag(viewHolder);
viewHolder.checkbox.setTag(list.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.checkbox.setChecked(false);
return view;
}
}
谢谢!
请参考以下链接:
适合您的完美解决方案
http://www.androiddom.com/2011/02/android-shopping-cart-tutorial.html
参见ProductAdapter类的代码
private boolean mShowCheckbox;
后来:
if(!mShowCheckbox) { item.productCheckbox.setVisibility(View.GONE); } else { if(curProduct.selected == true) item.productCheckbox.setChecked(true); else item.productCheckbox.setChecked(false); }