2012-04-30 6 views
0
Cursor searchCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
     new String[] {"_id",Phone.DISPLAY_NAME}, Phone.DISPLAY_NAME + " like ?", 
     new String[]{ "%" + cc.get("contactName").toString() + "%"}, null); 

startManagingCursor(searchCursor); 
while(searchCursor.isAfterLast() == false) { 
    final String name = searchCursor.getString(searchCursor.getColumnIndex(Phone.DISPLAY_NAME)); 
    final String number = searchCursor.getString(searchCursor.getColumnIndex(Phone.NUMBER)); 
    str =new String[]{name,number}; 
    ada = new SimpleCursorAdapter(this, R.layout.view_contacts_listview_layout, searchCursor, str, new int[] { R.id.contactName, R.id.contactPhoneNo }); 
} 

lvSearch.setAdapter(ada); 

カーソル照会は、単純カーソルアダプターでのみ問題が発生しています。シンプルカーソルアダプターでエラーが発生していません

+0

このエラーは?または私達はちょうど思います... –

+0

_how_は動作していないと説明してください、そしてlogcatのエラーを投稿してください。 – Sam

答えて

1
str =new String[]{name,number}; 

はあなたがSimpleCursorAdapterに列名を渡すことになっている

str = new String[]{Phone.DISPLAY_NAME, Phone.NUMBER}; 

でなければなりません。理由はありません

Cursor searchCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
       new String[] {"_id",Phone.DISPLAY_NAME}, Phone.DISPLAY_NAME + " like ?", 
       new String[]{ "%" + cc.get("contactName").toString() + "%"}, null); 

startManagingCursor(searchCursor); 
str = new String[]{Phone.DISPLAY_NAME, Phone.NUMBER}; 
ada = new SimpleCursorAdapter(this, 
           R.layout.view_contacts_listview_layout, searchCursor, 
           str, new int[] { 
             R.id.contactName, R.id.contactPhoneNo }); 

:あなたはさらに

を使用するには、列名として(。例:555-555-5555、「ジョン」)列の値を渡す代わりに、あなたのコードは、のように簡略化することができますSimpleCursorAdapterに送信する前にカーソルにアクセスします。自動的に必要なものはすべて自動的に管理されます。

は、私もあなたも電話番号のみを含めるように..あなたがあなたの投影を変更する必要があり、あなたのSimpleCursorAdapterにNUMBERにアクセスしようとしているにもかかわらず、あなたのクエリにコンタクト_IDとDISPLAY_NAMEを選択していることに気づいた。.. 例:

String[] projection = new String[] { BaseColumns._ID, Phone.DISPLAY_NAME, Phone.NUMBER }; 

Cursor searchCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        projection , Phone.DISPLAY_NAME + " like ?", 
        new String[]{ "%" + cc.get("contactName").toString() + "%"}, null); 
+0

私はこの間違いに気づいていないので、ダイムメありがとうございました。今、うまくいきました。もう一度ありがとうございます。 – kamil

+0

喜んで答えてください:あなたはそれが最高の解決策だと思うならば、マークを付けてください – dymmeh

+0

確かにdymmehですが、これは私が投稿した最初の質問だったので、これを行うには。 – kamil

関連する問題