The fact is, when I check the CheckBox , the ID this item is saved in SQLite . There may be many. So when I launch the application back, then there is already only the last selected Checkbox selected, and the rest seems to be False;
In the adapter as follows:
public class MainVacancyAdapter extends ArrayAdapter<VacancyModel> { private List<VacancyModel> vacancyModelList; private List<Integer> favVacanciesIDList; private int resource; private LayoutInflater inflater; SQLHelper sqlHelper; public MainVacancyAdapter(Context context, int resource, List<VacancyModel> objects) { super(context, resource, objects); vacancyModelList = objects; this.resource = resource; sqlHelper = new SQLHelper(getContext()); favVacanciesIDList = sqlHelper.getFavVacanciesID(); inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView(final int position, View convertView, final ViewGroup parent) { final ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = inflater.inflate(resource, null); holder.tvHeader = (TextView) convertView.findViewById(R.id.tvHeader); holder.tvDate = (TextView) convertView.findViewById(R.id.tvPostCr); holder.cbxFav = (CheckBox) convertView.findViewById(R.id.cbxFav); convertView.setTag(holder); } VacancyModel model = vacancyModelList.get(position); holder.tvHeader.setText(model.getHeader()); holder.tvDate.setText(model.getDate()); if (favVacanciesIDList != null){ for (int i = 0; i < favVacanciesIDList.size(); i++){ if (favVacanciesIDList.get(i) == vacancyModelList.get(position).getId()){ holder.cbxFav.setChecked(true); } else { holder.cbxFav.setChecked(false); } } } holder.cbxFav.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { int rowID = vacancyModelList.get(position).getId(); if (isChecked) { //inserting the data into Favourite Table // isSelected.set(position, true); vacancyModelList.get(position).setChecked(true); sqlHelper.createFavouriteTable(vacancyModelList.get(position)); } else { vacancyModelList.get(position).setChecked(false); sqlHelper.deleteFromFavouriteDatabase(rowID); notifyDataSetChanged(); } } }); return convertView; } private static class ViewHolder { private TextView tvHeader; private TextView tvDate; private CheckBox cbxFav; } } XML:
<CheckBox android:adjustViewBounds="true" android:id="@+id/cbxFav" android:layout_height="40dp" android:layout_width="40dp" android:scaleType="fitCenter" android:layout_alignParentBottom="false" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:background="@drawable/custom_checkbox" android:button="@drawable/custom_checkbox_transparent" android:focusable="false"/> Here
if (favVacanciesIDList != null){ for (int i = 0; i < favVacanciesIDList.size(); i++){ if (favVacanciesIDList.get(i) == vacancyModelList.get(position).getId()){ holder.cbxFav.setChecked(true); } else { holder.cbxFav.setChecked(false); } } } Everything is correct and compared if equal then сет . I did debugging.
Question: What could be the problem?