我有以下代码:
@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
,但那不起作用。
答案 0 :(得分:1)
我会保留输入文字的长度。当按退格/删除时,你基本上是删除了最后一个字符(长度正在减少),所以将新长度与旧长度进行比较。伪代码:
if newLength > oldLength then vibrate
else don't vibrate
如果newLength较短,则表示您已按下退格键/删除键并删除了一个字符,因此请勿振动。你可以在onTextChanged或者对你有意义的地方做到这一点。