2014-03-26 3 views
1

나는 상태를 저장하고 종료 한 후에 복원하기를 원하는 많은 체크 박스가 있습니다.여러 개의 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을 보여주고, 어떤 생각 : 여기 내 목록보기 어댑터의 코드인가?

+1

'SparseBooleanArray'사용 https://groups.google.com/forum/#!topic/android-developers/No0LrgJ6q2M – Raghunandan

답변

1

editor.commit 전화를 잊고 나에게 솔기, 당신은 빈 클래스 (세터 & 게터)를 만들고 체크 박스 상태를 저장해야 할 필요가있다.

그리고 당신은,이 예제는 정확히 당신이 상태를 저장합니다 즉 싶지만 통해 UR 요구에 따라 변경해야 할 일을이에 모습을 가질 수 있습니다 도움을

OnCheckedChangeListener myCheckChangList = new OnCheckedChangeListener() { 
     public void onCheckedChanged(CompoundButton buttonView, 
       boolean isChecked) { 
      //Update here the state so thet you can retrieve it on getView() method 
     } 
    }; 

처럼 저장합니다. 이 당신을 도울 것입니다

http://amitandroid.blogspot.in/2013/03/android-listview-with-checkbox-and.html

희망.

+0

안녕하세요, 정말로 감사 드리지만 자습서가 저에게 효과적이지는 않지만, 너의 마음에있는 다른 방법들? – xXJJJasonMokXx

+0

불행히도이 트릭을하지 않았다 :( –

2

그것은 여러 체크 박스 상태를 저장하기 위해 editor.put

관련 문제