0

我正在尝试在 GridView 中显示一些联系人,但我正在使用的示例当前正在使用 Toast。由于我是 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);
    }
}

主要的.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"
    />

您可以使用自己的光标值代替上面的光标。并且,请确保GridView您的 xml 部分中应该有 on 。不要忘记在清单文件中添加重要权限。

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

希望这对您有所帮助。

于 2012-08-03T11:17:31.433 回答
0

像这样在你的 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 中存储你需要的数据;然后

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

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