从sqlite android实现更好的搜索

时间:2018-12-05 12:13:38

标签: android search android-sqlite

我当前正在使用SearchView进行输入,只要输入发生更改,我都会调用searchVideo()

这是我的searchVideo函数:

public void searchVideo(String s)
    {
        videos.clear();

        SQLiteDatabase sqLiteDatabase = getActivity().openOrCreateDatabase("CodifyData", MODE_PRIVATE, null);
        String sql = "SELECT * FROM appdata_videos WHERE subcode='"+dbName+"' AND title LIKE '%"+s+"%'";
        Cursor c = sqLiteDatabase.rawQuery(sql,null);

        int idID = c.getColumnIndex("id");
        int linkID = c.getColumnIndex("link");
        int titleID = c.getColumnIndex("title");

        while(c.moveToNext())
        {
            videos.add(new VideoDataModel(c.getString(idID), c.getString(titleID), c.getString(linkID)));
        }

        c.close();

        videoAdapter.notifyDataSetChanged();
    }

但是,当用户输入两个单词并且标题中包含这两个作品但彼此不相邻或以用户输入的方式出现时,搜索失败,因此我该怎么做才能使此更好,请不需要复杂的解决方案,但更容易实现。

1 个答案:

答案 0 :(得分:2)

按空格分隔字符串以获取单词数组 并用这样的查询连接值:

String[] splitedValues = str.split("\\s+");
            String query="SELECT * FROM appdata_videos WHERE subcode='"+dbName+"' ";
            for(int i=0;i<splitedValues .length;i++){

                    query+="AND title LIKE '%"+splitedValues[i]+"%' ";

            }