0

データベースのレコードを表示するリストビューと、表示されたアイテムをフィルタリングするための textWatcher があります。問題は、これがラテン文字では問題なく機能するが、Unicode では機能しないことです。ただし、Unicodeは正常に表示されました。関連するコードは次のとおりです。

etFilter.addTextChangedListener(new TextWatcher() {

       public void beforeTextChanged(CharSequence s, int start, 
         int count, int after) {
       }

       public void onTextChanged(CharSequence s, int start, 
         int before, int count) {
        dataAdapter.getFilter().filter(s.toString());
       }

    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub

    }
      });

      dataAdapter.setFilterQueryProvider(new FilterQueryProvider() {
             public Cursor runQuery(CharSequence constraint) {
                 return provider.fechDobjectsByName(constraint.toString());
             }
         });      

ここで関連する質問は見つかりませんでした。誰もがどのように行われたか知っていますか? 編集:申し訳ありませんが、これは私の間違いでした。Unicode 文字で検索すると結果が表示されますが、大文字と小文字が区別されます。たった今、これに気づきました。では、文字が大文字であるかどうかに関係なく、検索して結果を表示するにはどうすればよいでしょうか。

public Cursor fechDobjectsByName(String inputText) throws SQLException {

      Cursor mCursor = null;
      if (inputText == null  ||  inputText.length () == 0)  {
       mCursor = database.query(DbHelper.TABLE_SONGS, 
         new String[] {DbHelper.COLUMN_ID,
         DbHelper.COLUMN_SONGNAME, DbHelper.COLUMN_SONGARTIST, 
         DbHelper.COLUMN_SONGGENRE}, 
         null, null, null, null, null);

      }
      else {
       mCursor = database.query(true, DbHelper.TABLE_SONGS, 
         new String[] {DbHelper.COLUMN_ID,
         DbHelper.COLUMN_SONGNAME, DbHelper.COLUMN_SONGARTIST, 
         DbHelper.COLUMN_SONGGENRE}, 
         DbHelper.COLUMN_SONGNAME + " like '%" + inputText + "%'", null,
         null, null, null, null);
      }
      if (mCursor != null) {
       mCursor.moveToFirst();
      }
      return mCursor;
4

0 に答える 0