dimanche 16 août 2015

How to show multiple checkbox checked in a listview after reopening application?

Listview having multiple checkboxes.I want to save checkbox checked or unchecked in shared preference to show checkbox checked when reopen the application.

public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) {

        LayoutInflater inflator = context.getLayoutInflater();
        convertView = inflator.inflate(R.layout.row, null);
        viewHolder = new ViewHolder();
        viewHolder.text = (TextView) convertView.findViewById(R.id.label);
        viewHolder.checkbox = (CheckBox) convertView
                .findViewById(R.id.check);
        viewHolder.textPhone = (TextView) convertView
                .findViewById(R.id.phone);
        viewHolder.checkbox
                .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                    @Override
                    public void onCheckedChanged(CompoundButton buttonView,
                            boolean isChecked) {
                        getPosition = (Integer) buttonView.getTag();
                        int h = getPosition;
                        // savePreferences("CHECKBOX",
                        // viewHolder.checkbox.isChecked());
                        list.get(getPosition).setSelected(
                                buttonView.isChecked());

                    }
                });

        viewHolder.checkbox.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                if (((CheckBox) v).isChecked()) {

                    ContactBean cb = list.get(getPosition);
                    caller_name = cb.getName();
                    caller_no = cb.getPhoneNo();
                    boolean nf = ((CheckBox) v).isChecked();
                    viewHolder.checkbox.setChecked(list.get(getPosition)
                            .isSelected());

                    savePreferences("CHECKBOX", ((CheckBox) v).isChecked());
                    blockAllCalls();
                } else {
                    viewHolder.checkbox.setChecked(list.get(getPosition)
                            .isSelected());

                    ContactBean cb = list.get(getPosition);
                    caller_name = cb.getName();
                    caller_no = cb.getPhoneNo();
                    savePreferences("CHECKBOX", !((CheckBox) v).isChecked());
                    clearContactFromList();

                }

            }
        });
        convertView.setTag(viewHolder);
        convertView.setTag(R.id.label, viewHolder.text);
        convertView.setTag(R.id.phone, viewHolder.textPhone);
        convertView.setTag(R.id.check, viewHolder.checkbox);
        // loadSavedPreferences();

    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    viewHolder.checkbox.setTag(position); // This line is important.

    viewHolder.text.setText(list.get(position).getName());
    viewHolder.textPhone.setText(list.get(position).getPhoneNo());
    viewHolder.checkbox.setChecked(list.get(position).isSelected());

    SharedPreferences sp = PreferenceManager
            .getDefaultSharedPreferences(context);

    boolean cbValue = sp.getBoolean("CHECKBOX", false);

    // String name = sp.getString("NAME", "YourName");
    if (cbValue) {

        CheckBox v = viewHolder.checkbox;
        boolean n = viewHolder.checkbox.isChecked();
        viewHolder.checkbox.setChecked(true);
    } else {
        viewHolder.checkbox.setChecked(false);
    }

    return convertView;

}




Aucun commentaire:

Enregistrer un commentaire