Java 如何通过忽略大小写过滤Recycleview?

Java 如何通过忽略大小写过滤Recycleview?,java,android,Java,Android,我正在从Recyclerview获取数据我正在我的应用程序中添加searchview筛选器,但是当我搜索大写和小写文本时,我认为没有找到结果可能会导致字符串出现问题,请帮助我解决此问题 private void search(final String s){ final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); Query query = Fir

我正在从Recyclerview获取数据我正在我的应用程序中添加searchview筛选器,但是当我搜索大写和小写文本时,我认为没有找到结果可能会导致字符串出现问题,请帮助我解决此问题

private void search(final String s){
            final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
            Query query = FirebaseDatabase.getInstance().getReference("Users").orderByChild("name").startAt(s).endAt(s + "\uf8ff");


        query.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                if (!TextUtils.isEmpty(s)) {
                    arrayList.clear();
                    for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                        final Contacts contacts = dataSnapshot1.getValue(Contacts.class);
                        assert firebaseUser != null;
                        assert contacts != null;
                        if (!contacts.getUid().equals(firebaseUser.getUid())) {
                            arrayList.add(contacts);
                        }
                    }


                 MyAdapter myAdapter = new MyAdapter(getApplication(), arrayList, new MyAdapter.OnItemClickListener() {
                  @Override
                   public void onItemClick(Contacts item) {
                            //Toast.makeText(FindFriendsActivity.this, "Item Clicked", Toast.LENGTH_LONG).show();
                    String visit_user_id=item.getUid();
                    Intent profileIntent=new Intent(FindFriendsActivity.this,ProfileActivity.class);
                     profileIntent.putExtra("visit_user_id",visit_user_id);
                      startActivity(profileIntent);
                        }
                    });

                    FindFriendsRecyclerList.setAdapter(myAdapter);
                    myAdapter.notifyDataSetChanged();

                } else {
                    arrayList.clear();
                    //onStart();
                    FindFriendsRecyclerList.setLayoutManager(new LinearLayoutManager(FindFriendsActivity.this));
                    adapter.startListening();
                    FindFriendsRecyclerList.setAdapter(adapter);
                }

            }
            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }

我从查询和firebase数据快照中获取数据,但当我在searchview上搜索大写和小写文本时,未找到结果。我如何可以忽略代码中的大小写问题?您可以使用equals ignore case实现此目的…这是用于忽略大小写的字符串函数

if (!contacts.getName().toLowerCase().contains(s.toString().toLowerCase())) // something like this..
{
    arrayList.add(contacts);
}
您可以尝试在您的用户名和从搜索视图中获取的文本上使用.toLowerCase,然后检查。。。。用于搜索用户名


我认为你可能在你的CaseC类对象中获取所有数据。然后,您只需在get filter方法中的search视图中检查输入的字符串,如上文所述。contains将检查输入的字符串是否存在。。。如果需要,还可以执行.startsWiths.toString.toLowerCase。如果要搜索以搜索视图中输入的字符串开头的名称。

可以使用等于忽略大小写…这是用于忽略大小写的字符串函数

if (!contacts.getName().toLowerCase().contains(s.toString().toLowerCase())) // something like this..
{
    arrayList.add(contacts);
}
public boolean regionMatches(boolean ignoreCase,
                             int toffset,
                             String other,
                             int ooffset,
                             int len)
您可以尝试在您的用户名和从搜索视图中获取的文本上使用.toLowerCase,然后检查。。。。用于搜索用户名

我认为你可能在你的CaseC类对象中获取所有数据。然后,您只需在get filter方法中的search视图中检查输入的字符串,如上文所述。contains将检查输入的字符串是否存在。。。如果希望搜索以搜索视图中输入的字符串开头的名称,也可以执行.startsWiths.toString.toLowerCase

public boolean regionMatches(boolean ignoreCase,
                             int toffset,
                             String other,
                             int ooffset,
                             int len)
ignoreCase:如果为true,则在比较字符时忽略大小写

public static boolean containsIgnoreCase(String str, String searchStr)     {
        if(str == null || searchStr == null) return false;

        final int length = searchStr.length();
        if (length == 0)
            return true;

        for (int i = str.length() - length; i >= 0; i--) {
            if (str.regionMatches(true, i, searchStr, 0, length))
                return true;
        }
        return false;
    }
ignoreCase:如果为true,则在比较字符时忽略大小写

public static boolean containsIgnoreCase(String str, String searchStr)     {
        if(str == null || searchStr == null) return false;

        final int length = searchStr.length();
        if (length == 0)
            return true;

        for (int i = str.length() - length; i >= 0; i--) {
            if (str.regionMatches(true, i, searchStr, 0, length))
                return true;
        }
        return false;
    }

您还可以使用toLowerCase或toUpperCase将两者转换为相同的大小写:

 if (!contacts.getUid().toLowerCase().equals(firebaseUser.getUid().toLowerCase())) {
     arrayList.add(contacts);
 }

您还可以使用toLowerCase或toUpperCase将两者转换为相同的大小写:

 if (!contacts.getUid().toLowerCase().equals(firebaseUser.getUid().toLowerCase())) {
     arrayList.add(contacts);
 }

不工作如何通过忽略大小写过滤recyclerview?您正在请求忽略大小写,此功能可以工作…但请检查您正在搜索什么。。。例如,如果要搜索名称或任何其他内容,则必须将其包含在if语句中。我只搜索用户名,而不是getUid。您应该使用getUserName或为用户名指定的字段。您搜索的字段错误,这就是搜索不起作用的原因…查询=FirebaseDatabase.getInstance.getReferenceUsers.orderByChildname.startAts.endAts+\uf8ff;不工作如何通过忽略大小写过滤recyclerview?您正在请求忽略大小写,此功能可以工作…但请检查您正在搜索什么。。。例如,如果要搜索名称或任何其他内容,则必须将其包含在if语句中。我只搜索用户名,而不是getUid。您应该使用getUserName或为用户名指定的字段。您搜索的字段错误,这就是搜索不起作用的原因…查询=FirebaseDatabase.getInstance.getReferenceUsers.orderByChildname.startAts.endAts+\uf8ff;我有答案,但我无法实现row.getName.toLowerCase.containscharString.toLowerCase | | row.getPhone.containscharSequence{filteredList.addrow;}但是如何在datasnapshot bcos上使用此方法我没有stringi有答案,但我无法实现If row.getName.toLowerCase.containscharString.toLowerCase | | | row.getPhone.containscharSequence{filteredList.addrow;},但是如何在datasnapshot bcos上使用此方法我没有字符串