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異常
你有沒有在版本<2.3的任何崩潰?如果是這樣,請在這裏添加logcut。 – Borys
在我試過的每個版本上崩潰,這是<2.3。它在日誌中拋出nullPointer異常cat – Y0Gi
從Query返回的Cursor有問題。在每個android平臺上,Contacts具有不同的Tables結構。所以你需要知道所有表的結構並在代碼中處理它。對不同的平臺有不同的查詢。 – Borys