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