我有我的edittext字段自動完成聯繫人的電話號碼。我知道如何從數據庫中獲取聯繫人並將其顯示在文本字段中,但我需要他們自動完成,以便用戶想要在文本字段中輸入名稱。我明白如何讓數組自動完成,以及背後的全部理論。但是如何從手機通訊錄中拉出很困難。我已經看過很多教程,還有關於堆棧溢出的各種問題,但仍然很難。代碼snippit將有助於請。使用自動完成textview與聯繫人電話號碼
public class MyContacts extends Activity {
AutoCompleteTextView txtPhoneNo;
public ArrayList<String> c_Name = new ArrayList<String>();
public ArrayList<String> c_Number = new ArrayList<String>();
String[] name_Val = null;
String[] phone_Val = null;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
txtPhoneNo = (AutoCompleteTextView) findViewById(R.id.txtPhoneNo);
}
Uri contacts = Uri.parse("content://icc/adn");
ContentResolver cr = getContentResolver();
Cursor managedCursor1 = cr.query(contacts, null, null, null, null);
{
if (managedCursor1.moveToFirst()) {
String contactname;
String cphoneNumber;
int nameColumn = managedCursor1.getColumnIndex("name");
int phoneColumn = managedCursor1.getColumnIndex("number");
Log.d("int Name", Integer.toString(nameColumn));
Log.d("int Number", Integer.toString(phoneColumn));
do {
// Get the field values
contactname = managedCursor1.getString(nameColumn);
cphoneNumber = managedCursor1.getString(phoneColumn);
if ((contactname != " " || contactname != null)
&& (cphoneNumber != " " || cphoneNumber != null)) {
c_Name.add(contactname);
c_Number.add(cphoneNumber);
}
} while (managedCursor1.moveToNext());
}
name_Val = (String[]) c_Name.toArray(new String[c_Name.size()]);
phone_Val = (String[]) c_Number.toArray(new String[c_Name.size()]);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, name_Val);
txtPhoneNo.setAdapter(adapter);
}
}
我的代碼...沒有編譯錯誤,但仍然無法正常工作
你能表達一下你想做什麼嗎? – Richa 2012-01-27 05:19:20
東西非常類似,對任何Android手機標準的自動完成textview,當你短信 – 2012-01-27 18:27:14
你解決了你的問題?如果解決然後發佈你的答案並接受它... – nKandel 2012-09-24 03:47:07