【发布时间】:2012-02-20 04:51:26
【问题描述】:
我正在让我的编辑文本字段自动完成联系人电话号码。我知道如何从数据库中获取联系人并将它们显示在文本字段中,但我需要它们自动完成以防万一用户想在文本字段中输入名称。我了解如何让数组自动完成以及其背后的整个理论。但是如何从电话联系人中提取是困难的。我看过很多教程以及关于堆栈溢出的各种问题,但仍然有点难过。请提供代码片段。
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);
}
}
我的代码...没有编译错误但仍然无法工作
【问题讨论】:
-
你能解释一下你想做什么吗?
-
当你发短信时,与任何 Android 手机标准的自动完成文本视图非常相似
-
您的问题解决了吗?如果解决了,请发布您的答案并接受它...
标签: android autocomplete sms android-contacts phone-number