java - 如何通过忽略大小写来过滤 Recycleview?

标签 java android

我正在从 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 for that...this is the string function for ignoring case.

if (!contacts.getName().toLowerCase().contains(s.toString().toLowerCase())) // something like this..
{
    arrayList.add(contacts);
}

您可以尝试在您的用户名和从搜索 View 中获取的文本上使用 .toLowerCase() 并检查....以搜索用户名...

我认为您可能正在获取联系人类对象中的所有数据。然后您只需要在上面的获取过滤器方法中检查搜索 View 中输入的字符串,.contains 将检查输入的字符串是否存在......如果你想你也可以做 .startsWith(s.toString().toLowerCase()) 如果你想搜索以输入的字符串开头的名字在搜索 View 中..

关于java - 如何通过忽略大小写来过滤 Recycleview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54230279/

相关文章:

java - 轮询字段中的空值时删除

android - 如何在 Android 中实现 RESTFUL 服务?

android - 发布者关闭输入 channel 或发生错误。事件=0x8

java - Android 两个AsyncTasks 串行执行还是并行执行? - 第二个是卡住,但结果还可以

java - Java 中的服务器-客户端 2 人游戏

java - Spring WebSocket 从服务器发送多个对值消息

java - 是否可以保证@PostConstruct方法的调用顺序?

java - Spring Boot中的Log4j2 Composite Configuration支持

android - RxJava2。对列表中的每个项目执行请求

Android:密度独立像素和三星 Galaxy Tab