データベースのレコードを表示するリストビューと、表示されたアイテムをフィルタリングするための 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;