如何在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数据中按数字格式搜索的主要内容,如果未能解决你的问题,请参考以下文章

C#中如何将txt文件在ListView中按列显示

如何在Listview中按字母顺序显示联系人[关闭]

如何将数据添加到 listView 的自定义 BaseAdapter - Android

在 Android 中按字母顺序对 Hashmap 值类型进行排序

如何在Android Firebase实时数据库中按降序获取孩子[重复]

Android 中listview中嵌套edittext问题