Reputation: 11
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;
}
}
Upvotes: 0
Views: 162
Reputation: 61
Store the value of the check-box in the preference data, get the value from the preference whenever you open the app.
Upvotes: 3