안드로이드 개발 질문/답변
(글 수 45,052)
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의 속성으로 체크박스를 넣었을떄는 어떻게 아이디를 알아서 저장 할 수 있는지 잘 모르겠습니다.
혹시 이렇게 체크상태를 저장할 수 있는 방법 아시는분 좀 도와주세요~




onItemSelectedLIstener 를 하나 만들어서 listviewe 할당 하시고
selection이 발생할 때 해당 pos의 contact id를 얻어와서 저장해 놓으시면 되겠군요