2

連絡先カーソルをアダプターに割り当てようとしています。アクセスできません。

以下のエラーがスローされます。アクティビティ java.lang.IllegalArgumentException を開始できません: 列 'data1' が存在しません

行内
*dataAdapter = new SimpleCursorAdapter(this, R.layout.contact_xml, cCursor, columns, to);*

以下は、アダプターを介して達成しようとしている連絡先のリストビューです。

---------------------------------------
Contact_name_1         
Phone_no
---------------------------------------
Contact_name_2         
Phone_no2
---------------------------------------
Contact_name_3         
Phone_no3
---------------------------------------

以下のコード。

public class NewContactTest1 extends Activity{

    ArrayAdapter<String> adapter;
    private SimpleCursorAdapter dataAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    Cursor cCursor = getAllCont();

    String[] columns = new String[]{

                ContactsContract.Contacts.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER
               };

        int[] to = new int[] { 
                R.id.name,
                R.id.phnumber
        };

    dataAdapter = new SimpleCursorAdapter(this, R.layout.contact_xml, cCursor, columns, to);   // I am getting error in here. 

    ListView listView = (ListView) findViewById(R.id.list_view);
    listView.setAdapter(dataAdapter);
    }

    public Cursor getAllCont()
    {
        Cursor cursor =
                getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
                        null, null, null, null);
         if (cursor != null) 
         {  
             cursor.moveToFirst();
         }
         return cursor;
    }

以下のエラーがスローされます。

contact_xml.xml

<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#FFF"
    android:orientation="horizontal"
    android:padding="5dip"
>

    <TextView 
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="id"
        android:visibility="invisible"
    />
    <TextView 
        android:id="@+id/phnumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sent_to"
        android:textColor="#333333"
        android:typeface="serif"
        android:textSize="15dip"
        android:background="#FFF"
    />

</RelativeLayout>

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

  <ListView 
    android:id="@+id/list_view"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 

  ></ListView>

</LinearLayout>
4

2 に答える 2

1

連絡先へのアクセスは少し難しいかもしれませんが、幸運なことに、これは StackOverflow で以前に解決されています。

一番上の回答があなたの質問に答えているように見えます。

于 2012-11-29T03:50:04.727 に答える
0

ここで、あなたが言うようにすべての連絡先を取得しています

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

        ContactBean objContact = new ContactBean();
        objContact.setName(name);
        objContact.setPhoneNo(phoneNumber);
        list.add(objContact); 
       //here you get all contacts for cursor and display listview

    }
    phones.close();

    ContanctAdapter objAdapter = new ContanctAdapter(ContactListActivity.this, R.layout.alluser_row, list);
    listView.setAdapter(objAdapter);
于 2012-11-29T04:14:59.127 に答える