これが何百万回も同じ質問のように見える場合は申し訳ありません...しかし、これをグーグルで検索しても結果は得られmanagedQuery
ません.
連絡先リストを取得するための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
ですか?