문제

다음 코드가 있습니다.

@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에서 아무 것도 일치하지 않는 문자로 들어 가지 않아도됩니다.이 문제는 Backspace / Delete 키를 누를 때도 진동합니다.그것은 의도가 아닙니다.

잘못된 문자를 입력하면서 진동을 허용하지만 백 스페이스 / DEL 키를 누를 때는 그렇지 않습니다.나는 onTextChanged를 시도했지만 그것이 작동하지 않았습니다.

도움이 되었습니까?

해결책

입력 한 텍스트의 길이를 유지할 것입니다.백 스페이스 / 삭제를 누르면 기본적으로 마지막 문자가 지워집니다 (길이가 줄어들고 있으므로 새 길이를 오래된 길이와 비교하십시오.의사 코드 :

if newLength > oldLength then vibrate

else don't vibrate 
.

newLength가 짧으면 백 스페이스 / 삭제 키를 누르고 문자를 삭제 했으므로 진동하지 마십시오.OntextChanged에서 또는 당신에게 의미가있는 곳에서 그것을 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top