簡體   English   中英

Android:如何保存多個選中的復選框狀態,甚至關閉並重新打開應用程序

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

我正在使用帶有復選框的自定義列表視圖...每當我選擇復選框項目時,它都會被毫無問題地選中...關閉並重新打開應用程序后,所選的復選框項目顯示為未選中....如何在選中后保存已選中的復選框項目重新打開應用程序...。我知道可以通過使用共享的首選項...這是代碼

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;
}

}

將復選框的值存儲在首選項數據中,每當您打開應用程序時從首選項中獲取值。

為每個復選框取布爾值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM