Note that there are some explanatory texts on larger screens.

plurals
  1. POCan not fetch contacts with synchronized gmail accounts
    primarykey
    data
    text
    <p>I am working on an application in which i need to fetch all the contacts from the contact book and display. i want the user to select some contacts and add them in a group which is saved in db.</p> <p>i have created a custom list view- contactitem.xml-</p> <pre><code>&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal"&gt; &lt;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"/&gt; &lt;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"/&gt; &lt;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"/&gt; &lt;/LinearLayout&gt; </code></pre> <p>i have a SelectContact class for fetching contacts from Contact book-</p> <pre><code> public class SelectContacts extends Activity implements OnClickListener{ private String groupName; private Button back; private Button home; private List&lt;Contact&gt; list = new ArrayList&lt;Contact&gt;(); private ListView contactList; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.selectcontacts); Bundle bundle = getIntent().getExtras(); groupName=bundle.getString("groupName"); back=(Button)findViewById(R.id.back_button); back.setOnClickListener(this); home=(Button)findViewById(R.id.home_button); home.setOnClickListener(this); contactList=(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() &gt; 0) { do{ 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))) &gt; 0) { String[] fields={ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER}; Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, fields, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null); pCur.moveToFirst(); do { String number=pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); Contact c=new Contact(name,number); list.add(c); }while (pCur.moveToNext()); pCur.close(); } }while (cur.moveToNext()); ContactAdapter contactAdapter=new ContactAdapter(this, R.layout.contactitem, list, contactList,groupName); contactList.setAdapter(contactAdapter); } } @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent= new Intent(); if(v==back){ Bundle bundle = new Bundle(); bundle.putString("groupName", groupName); intent.putExtras(bundle); intent.setClass(SelectContacts.this, GroupDetails.class); startActivity(intent); } if(v==home){ intent.setClass(SelectContacts.this, Welcome.class); startActivity(intent); } } } </code></pre> <p>and implemented a custom adapter- ContactAdapter-`</p> <pre><code>public class ContactAdapter extends ArrayAdapter&lt;HashMap&lt;String, Contact&gt;&gt;{ private ArrayList&lt;HashMap&lt;String, Contact&gt;&gt; items; private LayoutInflater mInflater ; public ContactAdapter(Context context, int textViewResourceId, ArrayList&lt;HashMap&lt;String, Contact&gt;&gt; items) { super(context, textViewResourceId, items); this.items = items; } @Override public View getView(int position, View convertView, ViewGroup parent) { mInflater = LayoutInflater.from(getContext()); ViewHolder holder; if(convertView==null){ convertView = mInflater.inflate(R.layout.contactitem, parent, false); holder = new ViewHolder(); holder.name = (TextView) convertView.findViewById(R.id.contactname); holder.number = (TextView) convertView.findViewById(R.id.contactnum); holder.add=(Button)convertView.findViewById(R.id.add); convertView.setTag(holder); } else{ holder=(ViewHolder)convertView.getTag(); } String name=items.get(position).get(""+position).getContactName(); String number=items.get(position).get(""+position).getContactNum(); holder.name.setText(name); holder.number.setText(number); return convertView; } static class ViewHolder{ TextView name; TextView number; Button add; } </code></pre> <p>}</p> <pre><code>here Contact is a 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; } } </code></pre> <p>i am a newbie in android.. </p> <p>The above code works quiet fine on emulater and fetch contact name and numbers to display in list. but when i test this code on phone which have a Gmail account syncronized, it got crashed with following error..</p> <p>CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0</p> <p>I don't have any idea why this is happening. Please give some suggestions...</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload