public class AddressProviderActivity extends Activity {
    private Cursor m_cPhoneCursor;
    ListAdapter Adapter;
    ListView contactsListView;
    //개인 정보 파일명
    public static final String FILE_PASSWORDSETTINGS_PREF = "PasswordSettingFILE"; 
    //개인 정보 키값
    public static final String KEY_PASSWORDSETTINGS_PREF = "PasswordSettingKey"; 
    /** 주소록 정보를 가지고 있는 커서 얻기 */
    private Cursor getCursor() {
     // 주소록이 저장된 URI
     Uri uContactsUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
  
     // 주소록의 이름과 전화번호의 열 이름
     String[] strProjection = {
       ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
       ContactsContract.CommonDataKinds.Phone.DATA1
     };
  
     // 주소록을 얻기 위한 쿼리문을 날리고 커서를 리턴
     return getContentResolver().query(uContactsUri, null, null, null, strProjection[0]);
    }
    
    /** 주소록 정보를 가지고 있는 커서 닫기 */   
    @Override
    protected void onDestroy() {
     m_cPhoneCursor.close();
     super.onDestroy();
    }     
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
           
        m_cPhoneCursor = getCursor();
        Adapter = getAdapter();
  
        contactsListView = (ListView)findViewById(R.id.list);
        
        contactsListView.setAdapter(Adapter);
        contactsListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);    
        contactsListView.setOnItemClickListener(mItemClcikListener);
    }
 
    /** 주소록을 표시해 주기위한 커서 어뎁터 얻기 */
    private ListAdapter getAdapter() {
     int iLayoutID = android.R.layout.simple_list_item_multiple_choice;
     int[] iTextViewID = new int[] {
       android.R.id.text1,
       android.R.id.text2
     };
     String[] strProjection = {
       ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
       ContactsContract.CommonDataKinds.Phone.DATA1
     };
  
     return new SimpleCursorAdapter(this, iLayoutID, m_cPhoneCursor, strProjection, iTextViewID);
    }
 }


content provider로 주소록을 불러와서 listview에 넣어줬는데요.

list의 item을 선택할 수 있게 ListView.CHOICE_MODE_MULTIPLE 을 추가해줬습니다.

이럴경우 checkbox가 옆에 같이 표시되는데

checkbox를 선택했을때 이 상태를 저장하고싶습니다. 다음에 다시 이페이지에 들어왔을떄 전에 체크했던게 그대로 남아있게요.

sharedPreference를 써서 저장해야되는거같은데요.

layout 에 체크박스를 넣어 그 아이디로 SharedPreference를 쓰는방법은 알겠는데 이렇게 listView의 속성으로 체크박스를 넣었을떄는 어떻게 아이디를 알아서 저장 할 수 있는지 잘 모르겠습니다.

 

혹시 이렇게 체크상태를 저장할 수 있는 방법 아시는분 좀 도와주세요~