简体   繁体   中英

Android:How to save multiple checked checkbox state even closing and reopening the app

I'm using custom listview with checkbox...Whenever I selected checkbox items it's getting selected without any problem...After closing and reopening the app selected checkbox items are showing as unchecked....How to save the checked checkbox items after reopening the app....I know it is possible by using shared preferences...Here is the code

public class SelectUserAdapter extends BaseAdapter {

public List<SelectUser> _data;
private ArrayList<SelectUser> arraylist;
Context _c;
ViewHolder v;
//RoundImage roundedImage;
List<String> list;

public String blockedlist;

public SelectUserAdapter(List<SelectUser> selectUsers, Context context) {
    _data = selectUsers;
    _c = context;
    this.arraylist = new ArrayList<SelectUser>();
    this.arraylist.addAll(_data);
}

@Override
public int getCount() {
    return _data.size();
}

@Override
public Object getItem(int i) {
    return _data.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}


@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
    View view = convertView;
    if (view == null) {
        LayoutInflater li = (LayoutInflater) _c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = li.inflate(R.layout.contacts_diplay_row, null);
        Log.e("Inside", "here--------------------------- In view1");
    } else {
        view = convertView;
        Log.e("Inside", "here--------------------------- In view2");
    }

    v = new ViewHolder();

    v.title = (TextView) view.findViewById(R.id.name);
    v.check = (CheckBox) view.findViewById(R.id.check);
    v.phone = (TextView) view.findViewById(R.id.no);
    v.imageView = (ImageView) view.findViewById(R.id.pic);

    final SelectUser data = (SelectUser) _data.get(i);
    v.title.setText(data.getName());
   // v.check.setChecked(data.getCheckedBox());
    v.phone.setText(data.getPhone());

    final  SelectUser p = getProduct(i);
    v.check.setOnCheckedChangeListener(myCheckChangeList);
    v.check.setTag(i);
    v.check.setChecked(p.isSelected);

    // Set image if exists
    try {

        if (data.getThumb() != null) {
            v.imageView.setImageBitmap(data.getThumb());
        } else {
            v.imageView.setImageResource(R.drawable.ic_launcher);
        }
        // Seting round image
        Bitmap bm = BitmapFactory.decodeResource(view.getResources(), R.drawable.ic_launcher); // Load default image
        //roundedImage = new RoundImage(bm);
        //v.imageView.setImageDrawable(roundedImage);
    } catch (OutOfMemoryError e) {
        // Add default picture
        v.imageView.setImageDrawable(this._c.getDrawable(R.drawable.ic_launcher));
        e.printStackTrace();
    }

    Log.e("Image Thumb", "--------------" + data.getThumb());

    // Set check box listener android
    v.check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            CheckBox checkBox = (CheckBox) view;
            if (checkBox.isChecked()) {
                data.setCheckedBox(true);

                Log.i("cdcd", "onItemClick: " +data.toString());
              } else {
                data.setCheckedBox(false);
            }
        }
    });

    view.setTag(data);
    return view;
}





    // Filter Class
public void filter(String charText) {
    charText = charText.toLowerCase(Locale.getDefault());
    _data.clear();
    if (charText.length() == 0) {
        _data.addAll(arraylist);
    } else {
        for (SelectUser wp : arraylist) {
            if (wp.getName().toLowerCase(Locale.getDefault())
                    .contains(charText)) {
                _data.add(wp);
            }
        }
    }
    notifyDataSetChanged();
}




  // for check box................
    SelectUser getProduct(int position) {
    return ((SelectUser) getItem(position));
}

ArrayList<SelectUser> getBox() {
    ArrayList<SelectUser> box = new ArrayList<SelectUser>();
    for (SelectUser p : arraylist) {
        if (p.isSelected)
            box.add(p);
    }
    return box;
}

CompoundButton.OnCheckedChangeListener myCheckChangeList = new CompoundButton.OnCheckedChangeListener() {
    public void onCheckedChanged(CompoundButton buttonView,
                                 boolean isChecked) {



        getProduct((Integer) buttonView.getTag()).isSelected = isChecked;

        String result = "999";
        for (SelectUser pp : getBox()) {
            if (pp.isSelected){

                result += "," +pp.phone;// PhoneNumberUtils.formatNumber(pp.phone)
                list = new ArrayList<String>();
                list.add(result);

            }
        }
        blockedlist = String.valueOf(list);

        Toast.makeText(_c, String.valueOf(blockedlist), Toast.LENGTH_LONG).show();


    }
};

static class ViewHolder {
    ImageView imageView;
    TextView title, phone;
    CheckBox check;
}

}

将复选框的值存储在首选项数据中,每当您打开应用程序时从首选项中获取值。

为每个复选框取布尔值。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM