The*_*zer 5 sms android autocomplete phone-number android-contacts
我正在为联系人电话号码制作我的edittext字段自动填充功能.我知道如何从数据库中获取联系人并在文本字段中显示它们,但我需要它们自动完成,只是因为用户想要在文本字段中键入名称.我理解如何让数组自动完成以及背后的整个理论.但是如何从电话联系中获取是很困难的.我已经看过许多教程以及关于堆栈溢出的各种问题,但仍然有点难过.代码snippit会有所帮助.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的代码......没有编译错误,但仍然无效
更好的方法是获取联系人并将其存储在ArrayList. 然后您只需将 ArrayList 与AutoCompleteTextView 绑定即可。然后,当用户在 TextView 中键入内容时,其余部分就很容易过滤 ArrayList AutoComplete。
更新
contact_name您可以使用 getter-setter和来创建 POJO 类contact_number。然后创建List<POJO> list = new ArrayList<POJO>();. 然后只需将 contact_name 和 contact_number 添加到listusingPOJO类中
POJO pojo_obj = new POJO();
pojo_obj.setcontact_name(contactname);
pojo_obj.setcontact_number(cphoneNumber);
list.add(pojo_obj);
Run Code Online (Sandbox Code Playgroud)
最后将其设置list为Adapter.
然后在 Adapter 类中,您可以使用将其设置为 TextView
list.get(position).getcontact_name();
list.get(position).getcontact_number();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6243 次 |
| 最近记录: |