0

いくつかの連絡先を GridView に表示しようとしていますが、使用している例では現在トーストを使用しています。私は Android 開発に慣れていないので、これらのツールで遊んでいるだけで、助けが必要です :)

private void displayContacts() 
{
    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    if (cur.getCount() > 0) 
    {
        while (cur.moveToNext()) 
        {
            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            if (Integer.parseInt(cur.getString(
                    cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) 
            {
                    Cursor pCur = cr.query(
                         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                         null, 
                         ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
                         new String[]{id}, null);
                    while (pCur.moveToNext()) 
                    {
                        String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        Toast.makeText(NativeContentProvider.this, "Name: " + name + " | Phone No: " + phoneNo, Toast.LENGTH_LONG).show();
                    } 
                    pCur.close();
            }
        }
    }
}

前もって感謝します :)

4

2 に答える 2

1

これを試してみてください -

public class Test extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        GridView gv = (GridView)findViewById(R.id.gridview);

        Cursor c = managedQuery(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);

        String[] cols = new String[]{ContactsContract.Contacts.DISPLAY_NAME};
        int[]   views = new int[]   {android.R.id.text1};

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_1,
                c, cols, views);
        gv.setAdapter(adapter);
    }
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is at /res/layout/gridview.xml -->
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10px"
    android:verticalSpacing="10px"
    android:horizontalSpacing="10px"
    android:numColumns="auto_fit"
    android:columnWidth="100px"
    android:stretchMode="columnWidth"
    android:gravity="center"
    />

カーソルの上ではなく、独自のカーソル値を使用できます。そして、GridViewxml 部分に on があることを確認してください。マニフェスト ファイルに重要なアクセス許可を追加することを忘れないでください。

<uses-permission android:name="android.permission.READ_CONTACTS"/>

これがお役に立てば幸いです。

于 2012-08-03T11:17:31.433 に答える
0

次のように ur XML に gridView を追加します::

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/grid_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:numColumns="auto_fit"
    android:columnWidth="90dp"
    android:horizontalSpacing="10dp"
    android:verticalSpacing="10dp"
    android:gravity="center"
    android:stretchMode="columnWidth" >  

</GridView>     

次に、onCreate() メソッドで、次のように定義します。

       gridView = (GridView) findViewById(R.id.gridView1);

今は while (pCur.moveToNext()) arrayList Store ur 必要なデータに。それで

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1, numbers);

        gridView.setAdapter(adapter);
于 2012-08-06T07:15:52.400 に答える