除了这个相关的问题,我无法在网上找到我正在寻找的内容: Display a list of contact as I type name OR phone number in the input box。
基本上,如果用户在搜索视图中键入例如键1,2,3,则在搜索视图中显示123,并且在列表视图中显示包含123的电话号码的所有联系人。我已经走到了这一步。
但我也希望看到像CEG'或者' BEG'在列表视图中。关于我甚至可以开始了解更多相关信息的任何指示都会有所帮助。
我的代码的显着部分(我相信!)是:
在我的searchview xml中,输入类型设置为phone:
<SearchView
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="right"
android:background="#5b74a8"
android:drawableLeft="@android:drawable/ic_menu_search"
android:padding="8dp"
android:queryHint="Search"
android:inputType="phone"
android:singleLine="true"
/>
</RelativeLayout>
在OnCreate中我有:
@Override
public boolean onQueryTextChange(String newText) {
// when the text in searchView changes, call the filter function
adapter.filter(newText);
return false;
}
我的过滤方法在另一个类中是:
// Filter Class
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
// _data is our list of Users, or contacts
_data.clear();
// If there is nothing in the searchbox,
// then show all the contacts
if (charText.length() == 0) {
_data.addAll(arraylist);
// or else....
} else {
for (SelectUser wp : arraylist) {
// If a contact's phone number matches the input thus far that the user
// is filtering for, then include it in the listview.
if (wp.getPhone().toLowerCase(Locale.getDefault())
.contains(charText)) {
_data.add(wp);
}
}
}
notifyDataSetChanged();
}
如有必要,可以发布更多代码。