我正在从 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/