Estoy trabajando en una aplicación en la que necesito recuperar todos los contactos del libro de contactos y mostrarlos. Quiero que el usuario seleccione algunos contactos y los agregue en un grupo que se guarda en db.Cómo mostrar los datos de la lista de Array a Custom ArrayAdapter
he creado una lista personalizada vista- contactitem.xml-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/contactname"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:layout_marginLeft="20dp"
android:ellipsize="end"
android:singleLine="true"
android:clickable="true"/>
<TextView
android:id="@+id/contactnum"
android:layout_width="wrap_content"
android:textColor="@color/White"
android:clickable="true"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:text="@string/add_contacts"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:focusable="false"
android:focusableInTouchMode="false"/>
</LinearLayout>
tengo una clase SelectContact para ir a buscar los contactos de Contacto Book-
public class SelectContacts extends Activity implementsOnItemClickListener {
private List<Contact> list = new ArrayList<Contact>();
private ListView contact_list;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.selectcontacts);
contact_list=(ListView)findViewById(R.id.contactsListView);
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
cur.moveToFirst();
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);
pCur.moveToFirst();
while (pCur.moveToNext()) {
String number=pCur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Contact c=new Contact();
c.setContactName(name);
c.setContactNum(number);
list.add(c);
}
pCur.close();
}
ContactAdapter contactAdapter=new ContactAdapter(this, R.layout.contactitem, list);
contact_list.setAdapter(contactAdapter);
}
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
}
}
e implementado una costumbre adapter- ContactAdapter-
public class ContactAdapter extends ArrayAdapter<Contact>{
List<Contact> items;
LayoutInflater mInflater ;
Context context;
int layoutResourceId;
public ContactAdapter(Context context, int layoutResourceId, List<Contact> items) {
super(context, layoutResourceId, items);
this.layoutResourceId=layoutResourceId;
this.items = items;
this.context=context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ViewHolder holder = new ViewHolder();
if(row==null){
mInflater = ((Activity)context).getLayoutInflater();
row = mInflater.inflate(layoutResourceId, parent, false);
holder.name = (TextView) row.findViewById(R.id.contactname);
holder.number = (TextView) row.findViewById(R.id.contactnum);
holder.add=(Button)row.findViewById(R.id.add);
row.setTag(holder);
}else{
holder=(ViewHolder)row.getTag();
}
String name=items.get(position).getContactName();
String number=items.get(position).getContactNum();
holder.name.setText(name);
holder.number.setText(number);
holder.add.setText("Add");
return row;
}
static class ViewHolder{
TextView name;
TextView number;
Button add;
}
}
aquí Contacto es un simple POJO-
public class Contact {
private String contactName;
private String contactNum;
public String getContactName() {
return contactName;
}
public void setContactName(String contactName) {
this.contactName = contactName;
}
public String getContactNum() {
return contactNum;
}
public void setContactNum(String contactNum) {
this.contactNum = contactName;
}
}
soy un novato en Android ..
Aquí cuando inicio la actividad SelectContact no puede mostrar de contacto en la interfaz de usuario .. por favor me ayude chicos ...
Gracias
Bro he cambiado el Código pero todavía no recibo nada. Depuré la Clase SelectContact. Aquí está buscando nombres pero no puede recuperar los números ... –
, por lo que está obteniendo los nombres en la lista, pero no los números, ¿es así? –
no .. quiero decir que hago un brindis en el bucle para mostrar el número ... bt no muestra nada ... creo que el flujo no está llegando en el pCur Loop .. –