lunes, 27 de junio de 2011

Custom Contact Manager Android

Quiero un listado de contactos en 2 columnas, hecho de la manera más simple posible. 
En principio solo mostraremos los nombres de los contactos, luego imagenes, abrir dialer, etc.
 Main.java
package b.android;

import java.util.ArrayList;

import java.util.HashMap;

import android.app.Activity;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.provider.ContactsContract;

import android.widget.GridView;

import android.widget.SimpleCursorAdapter;

public class Main extends Activity {

static final ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();

String[] projection = new String[] { ContactsContract.Data.DISPLAY_NAME,

ContactsContract.Data._ID };

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

populateContactList();

}

private void populateContactList() {

// Build adapter with contact entries

Cursor cursor = getContacts();

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,

R.layout.contact, cursor, projection,

new int[] { R.id.contactName });

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

gridview.setAdapter(adapter);

}

private Cursor getContacts() {

// Run query

Uri uri = ContactsContract.Contacts.CONTENT_URI;

String sortOrder = ContactsContract.Data.DISPLAY_NAME

+ " COLLATE LOCALIZED ASC";

return managedQuery(uri, projection, null, null, sortOrder);

}

}
Contacto Individual
 contact.xml 
 <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent" android:layout_height="wrap_content"

android:orientation="horizontal">

<TextView android:id="@+id/contactName" android:textSize="12sp"

android:textStyle="bold" android:layout_width="fill_parent"

android:layout_height="fill_parent" />

</LinearLayout>
Listado
 main.xml  
<?xml version="1.0" encoding="utf-8"?>

<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:numColumns="auto_fit"

android:verticalSpacing="10dp"

android:horizontalSpacing="10dp"

android:columnWidth="130dp"

android:stretchMode="columnWidth"

android:gravity="center"

/>
Seteamos el Main, y los permisos de lectura a contactos
 AndroidManifest.xml  

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="b.android"

android:versionCode="1"

android:versionName="1.0">

<application android:icon="@drawable/icon" android:label="@string/app_name">

<activity android:name=".Main"

android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>



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

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

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

</manifest>


1 comentario:

Diego dijo...

como hago para saber el numero de telefono, y que la lista salga con checkbox para elegir un conjunto de usuarios