Android 장치의 연락처를 가져 오려고합니다. 나는 좋은 샘플 코드연락처 가져 오기 성능 문제가 발생했습니다.
here을 발견하지만, ListActivity
은 시간이 많이 걸리는 그 코드를 사용하는 ArrayAdapter
채워하려고 할 때 - 거의 4 갤럭시 S2에 초 이상 장치에 더 많은. 그 성능을 향상시켜야합니다. 내가 생각하기에 Cursor
을 구현하고 하나 이상의 차원을 보유하고 Cursor
, SimpleCursorAdapter
을 목록 어댑터로 사용합니다.
나는이 방법으로 몇 가지 문제를 참조하십시오
- 내가 특정 위치에 항목을 얻을하는 방법을 모르겠어요.
- 각 커서마다 다른 열이 있습니다.
더 좋고/더 쉬운 방법이 있습니까?
편집 : 사용 a
public List<ContactData> readContacts(){
ContentResolver cr = getContentResolver();
List<ContactData> cd = new ArrayList<ContactData>();
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Phone._ID,ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY},
ContactsContract.CommonDataKinds.Phone.NUMBER + " IS NOT NULL",
null,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY);
while (pCur.moveToNext()) {
String phone = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String id = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
String name = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY));
ContactData cd1 = contactDataProvider.get();
cd1.id = id;
cd1.name = name;
cd1.phone = phone;
cd.add(cd1);
}
pCur.close();
return cd;
}
각 ListFragment 행에서 렌더링하려는 연락처의 데이터 조각의 완전하고 정확한 목록은 무엇입니까? – CommonsWare
코드 샘플을 추가했습니다. (ID, 이름, 전화 번호) – oshai