java - 同时使用大写和小写搜索

标签 java android realm

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/

相关文章:

java - 如何在不使用复杂代码结构的情况下在Java中连接字符串?

Java:传递双向链表的数组列表作为参数

java - Getter 不与任何字段关联

android - 如何在 RealmObject 中保存 ArrayList <LatLng>savedPath

java - Eclipse程序无法连接MySQL数据库

java - 如何记录错误并在 orElseThrow() 子句中引发异常?

android - FirebaseMessagingService - 如何从后台更新数据库或 SharedPreferences?

android - 反序列化 json 对象失败

android - 如何将自定义项添加到具有菜单布局的 NavigationView?

swift - 将 DateInterval 保存到 Realm 的正确方法