백만 번 같은 질문인데 죄송하지만 ... Google 검색은 아무런 결과도 얻지 못합니다. 오래된 튜토리얼 만 남았습니다. managedQuery
및 다른 사용되지 않는 솔루션을 사용 중입니다 ...안드로이드에서 안드로이드 용리스트 뷰에 연락처를 표시하는 방법 api 11+
을 통과했지만 샘플 코드가 고급 연락처 목록 조작 (검색 등)을 위해 있기 때문에 튜토리얼이 불완전 해지고 샘플 코드를 다운로드해도 도움이되지 않습니다.)
어쨌든 이것에 대한 간단한 해결책이 없어야하는 이유는 없습니다. 그래서 나는 이것이 백만 번 행해졌 음을 확신하고 있기 때문에 누군가 대답 할 수 있기를 바라고 있습니다. 수십 명의 다른 안드로이드 개발자가이 점을 인정할 것입니다.
연락처가 표시되지 않아서 최고의 지식으로 튜토리얼을 따라했습니다. 가장 큰 문제는 TO_IDS
이 android.R.id.text1
을 가리키는 정수 배열이라는 것입니다. 어떻게 든 연락처 이름 배열을 가져 오지 않으면 어떻게 될지 혼란 스럽습니다.
또한 최종 목표가 목록보기를 표시 할 때 텍스트보기가 필요한 이유가 혼란 스럽습니다 ... 튜토리얼에서 목록보기 인 mContactsList가 있습니다 ... 그러나 목록보기에 어댑터는 R.layout.contact_list_item
을 가리키며, 이는 정수 배열 인 TO_IDS로 채워진 textviews입니다.
mContactsList = (ListView) getActivity().findViewById(R.layout.contact_list_view);
mCursorAdapter = new SimpleCursorAdapter(
getActivity(),
R.layout.contact_list_item,
null,
FROM_COLUMNS, TO_IDS,
0);
mContactList.setAdapter(mCursorAdapter);
내가 뭘 잘못하고 있으며 어떻게 단순히 연락처 목록을 목록보기에 표시합니까?
편집 : 내 조각 클래스의
: 내 activity_main.xml에서
public class MyFragment extends Fragment implements
LoaderManager.LoaderCallbacks<Cursor>{
private static final String[] FROM_COLUMNS = {ContactsContract.Contacts.DISPLAY_NAME_PRIMARY };
private static final int[] TO_IDS = {android.R.id.text1};
ListView mContactList;
private SimpleCursorAdapter mCursorAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
return inflater.inflate(R.layout.contact_list_view,container,false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
mContactsList = (ListView) getActivity().findViewById(R.layout.contact_list_view);
mCursorAdapter = new SimpleCursorAdapter(
getActivity(),
R.layout.contact_list_item,
null,
FROM_COLUMNS, TO_IDS,
0);
mContactList.setAdapter(mCursorAdapter);
}
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
return null;
}
@Override
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
}
@Override
public void onLoaderReset(Loader<Cursor> cursorLoader) {
}
}
: 내 contact_list_view XML의
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id ="@+id/contactListFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:name="preamble.myapp.MyFragment"/>
</LinearLayout>
:
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
내 코드에 추가
내 연락처 _ 마지막으로 contact_list_layout의 XML에 대한 LIST_ITEM XML
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
:
나는 contact_list_layout.xml
에 넣어 무엇을? 이것은 단지 비어 있습니까 <LinearLayout>
? 이 xml이 어떻게 처리되는지는 자습서에서 명확하지 않습니다. 그것은이 XML이 조각이라고 말하지만 조각 인 경우 왜 에 listview
을 정의 했습니까?
'FROM_COLUMNS는 TO_IDS은'(각 목록 항목에서)보기 ID를 텍스트로지도 데이터베이스 열, http://developer.android.com/reference/android/widget/SimpleCursorAdapter (['SimpleCursorAdapter'] 참조 .html # SimpleCursorAdapter % 28android.content.Context, % 20int, % 20android.database.Cursor, % 20java.lang.String [], % 20int [], % 20int % 29).뭔가 코드를 사용하기 위해 커서 데이터를로드해야합니다. – zapl
@zapl 'FROM_COLUMNS' 및'TO_IDS'을 (를) 표시하는 코드를 일부 추가했습니다 ... 내가 갖고 있지 않은 것으로 나타났습니다. 'contact_list_layout.xml'과 저는'activity_main.xml'을 가지고 있습니다 ... 당신이'contact_list_layout.xml'이 어떻게 구성되어 있는지 말해 줄 수 있습니까? 내 xml 파일을 검토 할 수 있습니까? 나는 내가 놓친 뭔가가 있다는 느낌을 가지고 있으며, 일단 그것이 작동한다고 생각하면, 이 튜토리얼에서는 contact_list_layout.xml이 어쩌면 내가 실수를하고있는 곳에서 쓰여지는지 보여주지 않는다. –
@zapl mContactList.setAdapter (mCursorAdapter);에서 null 포인터 예외가 발생했습니다. –