Android自定义ListView与自定义标题?

时间:2016-03-17 06:37:09

标签: android listview android-checkbox

我有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);
                }
            }
        });

1 个答案:

答案 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方法中相应地更新列表复选框。