나는 상태를 저장하고 종료 한 후에 복원하기를 원하는 많은 체크 박스가 있습니다.여러 개의 CheckBox 중 Android에 저장되는 상태
이public class ListViewAdapter extends BaseAdapter {
Context context;
AppPicker.Package[] packagesForAdapter;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
private Intent blackListIntent;
List<Model> list = new ArrayList<Model>();
ArrayList<Integer> checkBoxPositions = new ArrayList<Integer>();
public ListViewAdapter(Context context, AppPicker.Package packages[], List<Model> list) {
this.context = context;
this.packagesForAdapter = packages;
this.list = list;
sharedPreferences = context.getSharedPreferences("CHECKBOXES", Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
int count = packagesForAdapter.length;
for(int i = 0; i < count; i++) {
checkBoxPositions.add(sharedPreferences.getInt("checkBoxPosition_" + i, 0));
}
for(int i = 0; i < count; i++) {
Log.d("CheckBox positions", checkBoxPositions.get(i).toString());
}
}
@Override
public int getCount() {
return packagesForAdapter.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
static class ViewHolder {
TextView text;
ImageView icon;
CheckBox checkBox;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(convertView == null) {
convertView = layoutInflater.inflate(R.layout.list_item, null);
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView.findViewById(R.id.icon_text);
viewHolder.icon = (ImageView) convertView.findViewById(R.id.icon_image);
viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.icon_check);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.checkBox.setTag(position);
viewHolder.icon.setImageDrawable(packagesForAdapter[position].icon);
viewHolder.text.setText(packagesForAdapter[position].label);
viewHolder.checkBox.setChecked(list.get(position).isSelected());
viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isCheck) {
if(isCheck) {
int getPosition = (Integer) compoundButton.getTag();
list.get(getPosition).setSelected(compoundButton.isChecked());
editor.putInt("checkBoxPosition_" + getPosition, getPosition);
blackListIntent = new Intent("com.jason.floating.notification.appPickerFragment.ListViewAdapter");
blackListIntent.putExtra("packageName", packagesForAdapter[position].name);
}else{
int getPosition = (Integer) compoundButton.getTag();
list.get(getPosition).setSelected(compoundButton.isChecked());
//editor.remove("checkBoxPosition_" + getPosition);
blackListIntent.removeExtra("packageName");
}
context.sendBroadcast(blackListIntent);
}
});
return convertView;
}
}
로그 모두 0을 보여주고, 어떤 생각 : 여기 내 목록보기 어댑터의 코드인가?
'SparseBooleanArray'사용 https://groups.google.com/forum/#!topic/android-developers/No0LrgJ6q2M – Raghunandan