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并且工作正常。问题是,当我按下退格/删除键时它也会振动。这不是本意。

如何在输入错误的字母时允许振动,但在按退格键/del 键时不允许振动。我试过了,onTextChanged但这不起作用。

4

1 回答 1

1

我会保留输入文本的长度。按退格/删除键时,您基本上是在擦除最后一个字符(长度正在减少),因此将新长度与旧长度进行比较。伪代码:

if newLength > oldLength then vibrate

else don't vibrate 

如果 newLength 较短,则表示您已按退格/删除键并删除了一个字符,因此不要振动。您可以在 onTextChanged 或任何对您有意义的地方执行此操作。

于 2014-01-10T14:46:22.887 回答