これは、同じ質問のように百万回に見える...しかし、このためのGoogle検索は、時代遅れのチュートリアルのちょうど束をなした結果を提供しない場合、私はごめんなさいmanagedQuery
と他の廃止されたソリューションを使用しています...11+
私はandroid developer training for retrieving a contact listを調べましたが、チュートリアルは不完全であり、サンプルコードをダウンロードすることも役立たないのは、サンプルコードがより高度な連絡先リスト操作(検索など)です。いずれの場合も)
、私はこれは百万回行われていると確信していると私はsのだから私は誰かがここに答えることができます願っていますこれに対する簡単な解決策は存在しない理由はありません何十もの他の初心者のアンドロイド開発者がこれを感謝するでしょう。
私は現れていない連絡先によって私の知る限りのチュートリアルに従っています。私は最大のものは、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);
私は間違っていますが、単に連絡先リストをリストビューに表示するにはどうすればよいですか?
EDIT:私のフラグメントのクラスで
:私の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"/>
私のコードに追加します
私の連絡先_ list_item XML contact_list_layout 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
をcontact_list_view.xml
に定義したのですか?
'FROM_COLUMNS、TO_IDS、'マップデータベースの列(各リスト項目に)ビューidをテキストに、[ 'SimpleCursorAdapter'(http://developer.android.com/reference/android/widget/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);でヌルポインタの例外が発生しました。 ' –