Введите двойной пробел, чтобы заменить запятую в multiautocompletetextview

Я хочу добавить запятую, когда я ввожу двойной пробел с клавиатуры в режиме мультиавтозаполнения текста. Я много чего ищу в гугле. Но не могу достичь своей цели. Я хочу заменить запятую для ввода пользователем двойного пробела.

Поэтому, очевидно, мне нужно написать что-то логичное в ontextChange() или OnAfterTextChanged() в слушателе addtextwatcher. Но у меня нет события после добавления 2 пробелов.

Я уже использовал токенизатор запятой при выборе слова из списка. Но я хочу добавить запятую, когда пользователь вводит двойной пробел с помощью клавиатуры.

заранее спасибо


person dipali    schedule 10.11.2016    source источник


Ответы (2)


Самое простое решение, которое я могу вам предложить, это использовать String.replace(). Вот небольшой фрагмент кода, который поможет вам

 @Override
protected void onCreate(Bundle savedInstanceState) {

    ...

    edt.addTextChangedListener(textWatcher);
}

И TextWatcher, который вы собираетесь установить на EditText

TextWatcher textWatcher = new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        edt.removeTextChangedListener(textWatcher);
        String text = edt.getText().toString();
        text = text.replace("  ", ",");
        edt.setText(text);
        edt.setSelection(text.length());
        edt.addTextChangedListener(textWatcher);
    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
};

введите здесь описание изображения

person Ravi    schedule 10.11.2016
comment
я использую multiautocompletetextview, поэтому я не могу установить текст в этом решении .provide для этого. - person dipali; 10.11.2016
comment
вы можете это сделать, я сделал этот код и использовал MultiAutoCompleteTextView, и он отлично работает, как вы можете видеть в docs также MultiAutoCompleteTextView расширяет EditText только для того, чтобы вы могли использовать все свойства EditText - person Ravi; 10.11.2016

Попробуйте так, я не пробовал этот код

boolean userPressedKey = false ;
int spaceCount = 0;


yourEditText.addTextChangedListener(new TextWatcher() {
    public void afterTextChanged(Editable s) {
        userPressedKey = false ;
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

    public void onTextChanged(CharSequence s, int start, int before, int count) {
        userPressedKey = true;
    }); 


public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (userPressedKey) {
        if (keyCode == KeyEvent.KEYCODE_SPACE) {
            spaceCount ++;
            if(spaceCount == 2){
                 //append comma to the edittext here
                 Toast.makeText(MainActivity.this, "White space is clicked twice", Toast.LENGTH_LONG).show();
            }

            return true;
        }else{
            spaceCount=0;
        }
    }
    super.onKeyDown(keyCode, event);
}
person SaravInfern    schedule 10.11.2016