как отображать контакты в виде списка в Android для Android API 11+

Извините, если это выглядит как один и тот же вопрос миллион раз ... но поиск в Google для этого не дает результатов, просто куча устаревших учебников, использующихmanagedQuery и другие устаревшие решения ...

Я прошел черезОбучение разработчиков Android для получения списка контактов, но учебник неполон, и даже загрузка примера кода не помогает, потому что пример кода предназначен для более сложных манипуляций со списком контактов (поиск и т. д.)

В любом случае, нет никаких причин, по которым не должно быть простого решения, поэтому я надеюсь, что кто-то может ответить здесь, потому что я уверен, что это было сделано миллион раз, и я уверен, что десятки других начинающих разработчиков Android был бы признателен за это.

Насколько я знаю, я следовал этому уроку, контакты не отображаются. Я думаю, что самое главное, чтоTO_IDS целочисленный массив, который указывает наandroid.R.id.text1, Я запутался, как это должно как-то тянуть массив имен контактов.

Кроме того, я запутался, почему текстовое представление необходимо, когда конечной целью является отображение списка ... В учебнике у нас есть mContactsList, который является представлением списка ... Но мы заполняем представление списка адаптером, указывающим наR.layout.contact_list_item это просто текстовые представления, заполненные TO_IDS, массивом целых чисел.

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);

Что я делаю не так и как мне просто отобразить список контактов в виде списка?

РЕДАКТИРОВАТЬ: добавив в мой код:

в моем классе фрагмента:

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) {

}
}

в моем activity_main.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>

в моем contact_list_view xml:

<?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_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:

Что я положу вcontact_list_layout.xml? Это просто пустой<LinearLayout>? В руководстве не ясно, как обрабатывается этот xml. Он говорит, что этот XML является фрагментом, но если это фрагмент, почему мы определилиlistview уже вcontact_list_view.xml?

Ответы на вопрос(1)

Ваш ответ на вопрос