如何在android的ListView数据中按数字格式搜索
Posted
技术标签:
【中文标题】如何在android的ListView数据中按数字格式搜索【英文标题】:How to search by Number format in ListView Data in android 【发布时间】:2017-05-08 03:58:44 【问题描述】:[我是 android 新手,我正在通过联系人工作,,,我已完成文本搜索,但我想在 android 中按数字格式搜索][1]
公共类 ContactFragment 扩展 Fragment 实现 View.OnClickListener
RequestQueue requestQueue;
public static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 100;
private ArrayList<SelectUser> selectUsers;
private List<SelectUser> temp;
private ListView listView;
Cursor phones, email;
// Pop up
ContentResolver resolver;
private EditText search;
private ContactAdapter adapter;
private View myview;
int count=0;
private ArrayList<String>server_PhoneNum;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
myview = inflater.inflate(R.layout.contactslayout, container, false);
requestQueue= Volley.newRequestQueue(getActivity());
server_PhoneNum = new ArrayList<>();
search = (EditText) myview.findViewById(R.id.editMobileNo);
selectUsers = new ArrayList<SelectUser>();
resolver = getActivity().getContentResolver();
listView = (ListView) myview.findViewById(R.id.contacts_list);
// Read and show the contacts
showContacts();
search.addTextChangedListener(new TextWatcher()
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
adapter.filter(s.toString());
@Override
public void afterTextChanged(Editable s)
);
return myview;
private void showContacts()
// Check the SDK version and whether the permission is already granted or not.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && getActivity().checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED)
requestPermissions(new String[]Manifest.permission.READ_CONTACTS, MY_PERMISSIONS_REQUEST_READ_CONTACTS);
//After this point you wait for callback in onRequestPermissionsResult(int, String[], int[]) overriden method
else
// Android version is lesser than 6.0 or the permission is already granted.
List<SelectUser> contacts = getContactNames();
adapter=new ContactAdapter(contacts,getActivity());
listView.setAdapter(adapter);
private List<SelectUser> getContactNames()
List<SelectUser> contacts = new ArrayList<>();
// Get the ContentResolver
ContentResolver cr =getActivity().getContentResolver();
// Get the Cursor of all the contacts
Cursor cursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
// Move the cursor to first. Also check whether the cursor is empty or not.
if (cursor.moveToFirst())
// Iterate through the cursor
do
// Get the contacts name
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phone_number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String Image=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI));
SelectUser user=new SelectUser();
user.setName(name);
user.setPhone(phone_number);
user.setThumb(Image);
contacts.add(user);
while (cursor.moveToNext());
// Close the curosor
cursor.close();
return contacts;
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults)
if (requestCode == MY_PERMISSIONS_REQUEST_READ_CONTACTS)
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
// Permission is granted
showContacts();
else
Toast.makeText(getActivity(), "Until you grant the permission, we canot display the names", Toast.LENGTH_SHORT).show();
@Override
public void onClick(View v)
【问题讨论】:
【参考方案1】:如果您只想输入数字,请提供android:inputType="number"
。否则您之前的答案对于数字和文本很常见。 android:inputType
将只允许您提供哪种类型的输入。
【讨论】:
对不起,我想按联系电话搜索 我在 Listview 中有一些联系人 我已完成按姓名搜索但我想按号码搜索以上是关于如何在android的ListView数据中按数字格式搜索的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据添加到 listView 的自定义 BaseAdapter - Android
在 Android 中按字母顺序对 Hashmap 值类型进行排序