0

次のコードがあります。

@SuppressWarnings("unchecked")
        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            data = (ArrayList<SetRows>)results.values;
            EditText etS = (EditText) ((Activity)context).findViewById(R.id.etSearch);
            if (data.isEmpty()) {
                etS.setTextColor(Color.parseColor("#FFCC0000"));
                Vibrator vb = (Vibrator) ((Activity)context).getSystemService(Context.VIBRATOR_SERVICE);
                // Vibrate for 100 milliseconds
                vb.vibrate(100);
            }
            if (!data.isEmpty()) {
                etS.setTextColor(Color.parseColor("#FF27497B"));
            }
            notifyDataSetChanged();
            clear();
            for(int i = 0, l = data.size(); i < l; i++)
                add(data.get(i));
            notifyDataSetInvalidated();
        }

一致しない文字を入力するたびに振動し、ListView正常に動作しています。問題は、バックスペース/削除キーを押すと振動することです。これは意図ではありません。

間違った文字を入力しているときにバイブレーションを許可するにはどうすればよいですか? を試してみましたonTextChangedが、うまくいきませんでした。

4

1 に答える 1

1

入力したテキストの長さを維持します。バックスペース/削除を押すと、基本的に最後の文字が消去されます(長さが減少します)ので、新しい長さと古い長さを比較してください。擬似コード:

if newLength > oldLength then vibrate

else don't vibrate 

newLength が短い場合は、backspace/delete キーを押して文字を削除したことを意味するので、振動しないでください。onTextChanged、またはあなたにとって意味のある場所でそれを行うことができます。

于 2014-01-10T14:46:22.887 に答える