2013-06-18 47 views
2

ndroid填充只接觸工作的手機上面薑餅
下面的代碼是我用來加載聯繫人列表視圖的Android填充只接觸工作的手機上面薑餅上的ListView

dialog = new Dialog(AddNewFriend.this); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.contact_view); 
     dialog.show(); 
     final ListView lv=(ListView) dialog.findViewById(R.id.lv_contacts); 
     final EditText et_search=(EditText) dialog.findViewById(R.id.et_search); 
     String contact=""; 
      int i; 

      ContentResolver cr= getContentResolver(); 
      Cursor c1=cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, ContactsContract.Contacts.DISPLAY_NAME); 
      // Toast.makeText(c, c1.getCount()+"", Toast.LENGTH_LONG).show(); 
      if(c1.getCount()>0) 
      { 
       displ=new String[c1.getCount()]; 
       displ2=new String[c1.getCount()]; 
       c_name=new String[c1.getCount()]; 
       c_no=new String[c1.getCount()]; 
       i=0; 

      while(c1.moveToNext()) 
      { 
       String id=c1.getString(c1.getColumnIndex(ContactsContract.Contacts._ID)); 
       c_name[i]=c1.getString(c1.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
       if(Integer.parseInt(c1.getString(c1.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))>0) 
       { 
        Cursor c2=cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?",new String[] {id}, null); 
        c2.moveToFirst(); 
        c_no[i]=c2.getString(c2.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

       } 
        if(c_no[i]==null) 
        contact=String.format(c_name[i]+"\n"); 
        if(c_name[i]==null) 
         contact=String.format(" \n"+c_no[i]); 
        else 
        contact=String.format(c_name[i]+"\n"+c_no[i]); 
        displ[i]=contact; 
        i++; 
      } 

      // displ2=displ; 
      for(int k=0;k<displ.length;k++) 
      { 
       displ2[k]=displ[k]; 
      } 
      adpt=new ArrayAdapter<String>(AddNewFriend.this, android.R.layout.simple_list_item_1,displ2); 
      lv.setAdapter(adpt); 
      } 

做工精細的手機與Android 2.3以上的操作系統版本,任何人都可以幫忙嗎? 它在日誌貓上拋出nullPointer異常

+0

你有沒有在版本<2.3的任何崩潰?如果是這樣,請在這裏添加logcut。 – Borys

+0

在我試過的每個版本上崩潰,這是<2.3。它在日誌中拋出nullPointer異常cat – Y0Gi

+0

從Query返回的Cursor有問題。在每個android平臺上,Contacts具有不同的Tables結構。所以你需要知道所有表的結構並在代碼中處理它。對不同的平臺有不同的查詢。 – Borys

回答

0

添加支持的庫並使用託管查詢來更多地列出您的聯繫人。 此遊標將由Android管理,因此您無需關閉它。