연락처에서 별명 및 SIP 주소를 쿼리하려고합니다. 내가 겪고있는 문제는 둘 다 DATA1 열에 저장된다는 것입니다. 그래서 쿼리를 실행할 때, 나는 닉네임 만 검색합니다. 두 가지를 모두 가져 와서 아래 SimpleCursorAdapter
에 전달하는 방법은 무엇입니까? SimpleCursorAdapter
를 사용커서로드/어댑터가 올바른 값을 표시하지 않습니다.
CursorLoader c = new CursorLoader(getActivity(), baseUri, CONTACTS_NUMBER_PROJECTION2, Data.MIMETYPE+" ='" + Nickname.CONTENT_ITEM_TYPE+"'", null, ORDER);
private static final String[] CONTACTS_NUMBER_PROJECTION2 = new String[] {
SipAddress.DISPLAY_NAME,
SipAddress.SIP_ADDRESS,
BaseColumns._ID};
, 모두 Nickname.NAME
및 SipAddress.SIP_ADDRESS
는 별명입니다.
SimpleCursorAdapter adapter = new SimpleCursorAdapter(getActivity(), R.layout.contact_list, null,
new String[] {Nickname.NAME, SipAddress.SIP_ADDRESS},
new int[] {R.id.text1, R.id.text2}, 0);
스크린 샷은 다음과 같습니다. 작은 글꼴은 Sip Address 여야합니다.
Nickname.CONTENT_ITEM_TYPE
에서 SipAddress.CONTENT_ITEM_TYPE
으로 변경하면 닉네임 대신 Sip Addresses가 표시됩니다. 나는 둘 다 나타나는 방법을 모르겠습니다.
업데이트 :
나는 각각 Nickname.DATA7 및 Nickname.DATA *에 Nickname.NAME 및 SipAddress.SIP_ADDRESS을 변경했습니다. 내 selectionArgs에 'null'을 추가했습니다.
업데이트 2 : 나는 StructuredName.DISPLAY_NAME 및 StructuredName에서 모금 및 별명 값을 저장
사실이 아닌 같은 행에 표시 할 닉네임과 SIP 주소를 모두받을 수 있나요 .GIVEN_NAME 다음 어댑터와 함께 그들을로드했습니다. documentation으로
if (key.equals("alias")) {
contacts.add(ContentProviderOperation
.newInsert(
ContactsContract.Data.CONTENT_URI)
.withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID,
0)
.withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
userDict.get(key).toString())
.build());
}
if (key.equals("sipExt")) {
contacts.add(ContentProviderOperation
.newInsert(
ContactsContract.Data.CONTENT_URI)
.withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID,
0)
.withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,
userDict.get(key).toString())
.build());
}
Data.MIMETYPE을 제거 하시겠습니까? 알 수없는 열 유형은 Nickname.DATA5, Nickname.DATA6 등을 의미합니까? – ono
예. 이 경우 주소록 제공자의 동작이 지정되지는 않지만 정상적으로 수행되기를 기대할 수 있습니다. 작은 실험 –
Nickname.NAME 및 SipAddress.SIP_ADDRESS를 각각 Nickname.DATA7 및 Nickname.DATA *로 변경했습니다. 내 selectionArgs에 'null'을 추가했습니다. 나는 실제로 동일한 행에 나타나지는 않지만 닉네임과 모금 주소를 모두 얻습니다. 업데이트 된 질문을 확인하고 스크린 샷을 추가했습니다. – ono