私の新しいアンドロイドプロジェクトの助けが必要でした。構造を簡単に説明しましょう。BaseAdapter内のgetContentResolver()にアクセスする
私のプロジェクトにはMainActivityがあり、アクティビティ内にはアプリケーションのタブからアクセスできる3つのフラグメントがあります。私の最後のタブ/フラグメントでは、写真、名前、番号とともに電話のすべての連絡先を一覧表示しようとしています。私は名前と番号については、次のコードに出くわした:
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while (phones.moveToNext()) {
String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
//Toast.makeText(getApplicationContext(),name, Toast.LENGTH_LONG).show();
String full = name + " " + phoneNumber;
}
私は私のフラグメントと名前の中に配置した場合、次のコードは、魔法のように動作し、とにかくgetActivity().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
にgetContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
のような特定の参照を変更するので、私はそれを働かせることができましたが、左側に画像がある連絡先を表示するなどの問題に陥ったので、私はYouTubeのチュートリアルAndroid BaseAdapter Tutorialに出くわしました。 facepalmの瞬間をたくさんして、何が起こっているのか把握しようとしたら(私はAndroidの開発には慣れていない)、最初に2つのチュートリアルを終えて、小さな問題に着いた。
連絡先にアクセスしようとしました(この質問の最初のブロックを使用)私は、アクティビティ内にある場合を除いて、getContentResolver()
の機能にアクセスできないことを知りました。ここに私のBaseAdapterのための私の現在のコードです:Android BaseAdapter Test Code - Paste Bin。
誰かが私にこのアプローチに最善の方法を教えることができれば、それはとても助けになります。
連絡先にアクセスして画像、名前、番号で簡単にリストする方法はありますか?ライブラリはおそらく?何でもスーパーシンプルな作品。 WhatsAppの連絡先リスト、Viberなども好きですか?ありがとう!
アダプタのコンストラクタにコンテキスト引数を追加し、インスタンスに格納します。アダプタが静的に格納されていないか、静的変数にコンテキストを格納している限り、これが最も簡単な方法です。さらに、アダプタの外部に連絡先を取得し、アダプタにリストを割り当てるだけです。 – GPuschka