gpt4 book ai didi

android - 带有联系人电话号码的 MultiAutoCompleteTextView

转载 作者:行者123 更新时间:2023-11-29 21:12:16 24 4
gpt4 key购买 nike

我需要使用用户设备上联系人的电话号码创建一个 MultiAutoCompleteTextView。我需要的是类似于gmail;使用 gmail 电子邮件地址除外。对于联系人,我有以下需求:

  • 每个电话号码都必须是一个条目。因此,如果 John 有 3 个号码(家庭、手机、工作),它们将显示为 3 个条目

  • 每个条目都可以通过电话号码或人名/姓氏进行搜索

为了创建我的适配器,我尝试修改 Google 提供的适配器但是当我下载示例时,它无法编译(当东西开箱即用时,这是一种糟糕的体验,但我正在尝试对其进行故障排除)。然后使用 http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.html 处的示例我会将我的 MultiAutoCompleteTextView 绑定(bind)到适配器。此时,我不确定如何转换适配器以满足我的需要(即按姓名或电话搜索联系人并检索号码)。所以我的求助电话是这样的:有没有人成功地做到了这一点并且不介意分享他们的代码?或者有谁知道我如何修改链接的适配器来给我电话号码,我可以按姓名或电话搜索?第三,适配器可以与 MultiAutoCompleteTextView 一起使用吗?

注意

在问这个问题时,我对谷歌如何为电子邮件实现他们的 MultiAutoCompleteTextView 做出了某些假设。有谁知道该代码是否开源?有谁知道我的假设是否正确?我实现联系电话 MultiAutoCompleteTextView 的想法可行吗?

更新

所以自问这个问题以来我已经走了很长一段路。我现在正在使用 AutoComplete with name and number as in native sms app Android 的答案.但我正在尝试将实现转换为 MultiAutoCompleteTextView 但它不允许多个条目。有谁知道我该如何完成这个?

更新 2

引用AutoComplete with name and number as in native sms app Android :

我的 MultiAutoCompleteTextView 目前可以正常工作:它允许多个条目。我只是将 AutoCompleteTextView 替换为 MultiAutoCompleteTextView,并且忽略了其他答案的 onItemClick 建议。它的工作,有点。除了,我得到的数据不是您在 gmail EditText 中看到的格式良好的元素。回到最初的问题:谷歌是怎么做到的?我不想花时间解释 gmail compose editText 的外观,因为相关读者可以很容易地验证这一点。在他们的 EditText 中,我可以输入四个联系人,然后通过随机访问点击其中一个将其删除。我希望能够做到这一点。怎么办?

最佳答案

试试这个:

final Resources res = getResources();
LinearLayout ll = new LinearLayout(this);
AutoCompleteTextView tv = new AutoCompleteTextView(this);
tv.setThreshold(1);
String[] from = { Phone.DISPLAY_NAME };
int[] to = { android.R.id.text1 };
SimpleCursorAdapter a = new SimpleCursorAdapter(this, android.R.layout.simple_dropdown_item_1line, null, from, to, 0);
a.setStringConversionColumn(2); // Phone.NUMBER
ViewBinder viewBinder = new ViewBinder() {
@Override
public boolean setViewValue(View v, Cursor c, int index) {
TextView tv = (TextView) v;
int typeInt = c.getInt(3); // Phone.TYPE
CharSequence type = Phone.getTypeLabel(res, typeInt, null);
// Phone.DISPLAY_NAME + Phone.NUMBER + type
tv.setSingleLine(false);
tv.setText(c.getString(1) + "\n" + c.getString(2) + " " + type);
return true;
}
};
a.setViewBinder(viewBinder);
FilterQueryProvider provider = new FilterQueryProvider() {
@Override
public Cursor runQuery(CharSequence constraint) {
// run in the background thread
Log.d(TAG, "runQuery constraint: " + constraint);
if (constraint == null) {
return null;
}
ContentResolver cr = getContentResolver();
Uri uri = Uri.withAppendedPath(Phone.CONTENT_FILTER_URI, constraint.toString());
String[] proj = { BaseColumns._ID, Phone.DISPLAY_NAME, Phone.NUMBER, Phone.TYPE, };
return cr.query(uri, proj, null, null, null);
}
};
a.setFilterQueryProvider(provider);
tv.setAdapter(a);
ll.addView(tv, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
setContentView(ll);

关于android - 带有联系人电话号码的 MultiAutoCompleteTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22443791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com