我有listview
个自定义项目checkbox
,我还有listview
的自定义标题,并选择了所有checkbox
字段。现在每当我有选择标题时checkbox
比我想要的checkbox
中的所有listview
都被选中,就像所有选择和所有取消选中标题复选框一样。
以下是适配器的代码和复选框上的点击事件。
HEADER CODE:
ftoPfmsDetails = (ListView) findViewById(R.id.bene_upload_details);
View header = getLayoutInflater().inflate(R.layout.upload_grid_header, null);
ftoPfmsDetails.addHeaderView(header);
适应代码:
final FtoDetailsAdapter adapter = new FtoDetailsAdapter(BeneficiaryDataForUpload.this, gridUploadData, 2, chkAll);
adapter.notifyDataSetChanged();
ftoPfmsDetails.setAdapter(adapter);
HEADER CHECKBOX ALL SELECT CODE
final CheckBox chkAll = (CheckBox) header.findViewById(R.id.selectAll);
chkAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < adapter.getCount(); i++) {
ftoPfmsDetails.setItemChecked(i, true);
}
}
});
答案 0 :(得分:0)
要利用setItemChecked,必须设置ListView来处理它。 请参阅文档中的引用:
仅在选择模式设置为CHOICE_MODE_SINGLE或CHOICE_MODE_MULTIPLE时有效。 http://developer.android.com/reference/android/widget/AbsListView.html#setItemChecked(int,布尔值)
因此,您可以按照此方法将ListView设置为CHOICE_MODE_MULTIPLE,并使您的行可以检查。
或者不是在标题上设置OnClickListener
复选框,设置OnCheckedChangedListener
并在适配器中添加标志并在侦听器中设置它,例如。 FtoDetailsAdapter.checkAll = isChecked;
。然后在设置该标志后,您只需通知适配器数据集已更改,并在适配器getView
方法中相应地更新列表复选框。