public class ActivityPS extends AppCompatActivity {
private PS_DA ps_da = new PS_DA(ActivityPS.this);
RecyclerView recyclerView;
android.widget.SearchView searchView;
Realm realm = Realm.getDefaultInstance();
AdapterPS adapterPS;
List<PS> filteredPs;
RealmResults<PS> psList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ps);
cast();
setUpRecycler();
searchviewSetUp();
}
public void searchviewSetUp(){
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
});
}
@Override
public boolean onQueryTextChange(String s) {
filteredPs =filter(psList,s);
if (filteredPs.size()> 0){
return true;
}
return false;
}
public List<PS> filter (List<PS> psLists,String s){
s = s.toLowerCase();
filteredPs = new ArrayList<>();
for (PS psList : psLists){
final String text = psList.getCommandName().toString().toLowerCase();
if (text.contains(s));
filteredPs.add(psList);
}
psList = realm.where(PS.class).contains("commandName",s).findAll();
adapterPS = new AdapterPS(ActivityPS.this,psList,realm);
recyclerView.setLayoutManager(new LinearLayoutManager(ActivityPS.this));
recyclerView.setAdapter(adapterPS);
return filteredPs;
}
}
我想搜索我的 Realm 数据库,我希望我的搜索 View 对字母大小写不敏感。我这样做了,但无论插入小写还是大写,结果都只显示小写数据。我不知道我该怎么办...
最佳答案
你可以让 realm DB
搜索 case insensitive
,添加 Case.INSENSITIVE
boolean
作为第三个 方法中的参数
:
public RealmQuery<E> contains(String fieldName, String value, boolean > caseSensitive)
From documentation: All four string predicates i.e.
contains, beginsWith, endsWith, like
have an optional third argument to control case sensitivity: Case.INSENSITIVE and Case.SENSITIVE. The default is Case.SENSITIVE.
psList = realm.where(PS.class).contains("commandName",s, Case.INSENSITIVE).findAll();
关于java - 同时使用大写和小写搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54294628/