поделить строку в EditText
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
поделить строку в EditText
Что-то запутался, как стандартными средствами поделить строку в Edittext? К примеру мне надо ввести IMEI. Я ввожу и хочу их визуально разделить по 3 символа.
Поделил так
[syntax=java5]
public void onTextChanged(CharSequence s, int start, int before, int count) {
String imei = mImei.getText().toString().replaceAll("[^0-9]", "");
String[] imeiParts = imei.split("(?<=\\G.{3})");
String formattedString = "";
for (int i=0;i<imeiParts.length;++i) {
formattedString += imeiParts + " ";
}
mImei.setText(formattedString);
}
[/syntax]
В итоге при смене строки в конце метода, нас снова бросает в данный метод (onTextChanged), что в принципе логично. Можно добавить флаг, но может есть какие-то более гуманные решения как можно делить введенный текст в EditText? Какие-то отдельные либы лучше не использовать.
Поделил так
[syntax=java5]
public void onTextChanged(CharSequence s, int start, int before, int count) {
String imei = mImei.getText().toString().replaceAll("[^0-9]", "");
String[] imeiParts = imei.split("(?<=\\G.{3})");
String formattedString = "";
for (int i=0;i<imeiParts.length;++i) {
formattedString += imeiParts + " ";
}
mImei.setText(formattedString);
}
[/syntax]
В итоге при смене строки в конце метода, нас снова бросает в данный метод (onTextChanged), что в принципе логично. Можно добавить флаг, но может есть какие-то более гуманные решения как можно делить введенный текст в EditText? Какие-то отдельные либы лучше не использовать.
Re: поделить строку в EditText
конечно, какой-то визуальный вид для пользователя удобнее, но вот когда редактируешь такой текст, то добавляемые символы-разделители ужасно путают ввод, а пользователя без клавиатуры (а даже и с клавиатурой) ужасно бесят.
имхо, если и использовать какой-то формат у EditText, то так, чтоб когда пользователь вводит символы - то пробелов-черточек-прочего не было бы (т.е. при фокусировании-клике на тексте), а когда уходит с поля - то оно бы форматировалось. Либо так, чтоб эти "пробелы" были нередактируемыми (проскакиваемыми).
Не знаю, понятно ли выразилась. В виндах есть такое когда вводишь в поле символы там такая маска типа
_____.__ где ты не можешь поставить ничего в позицию точки.
Я не помню есть ли для этого способ, честно говоря.. надо подумать. Но я юзаю форматы для чисел (например, деньги) когда показываю текст уже готовый в TextView, а не в EditText.
имхо, если и использовать какой-то формат у EditText, то так, чтоб когда пользователь вводит символы - то пробелов-черточек-прочего не было бы (т.е. при фокусировании-клике на тексте), а когда уходит с поля - то оно бы форматировалось. Либо так, чтоб эти "пробелы" были нередактируемыми (проскакиваемыми).
Не знаю, понятно ли выразилась. В виндах есть такое когда вводишь в поле символы там такая маска типа
_____.__ где ты не можешь поставить ничего в позицию точки.
Я не помню есть ли для этого способ, честно говоря.. надо подумать. Но я юзаю форматы для чисел (например, деньги) когда показываю текст уже готовый в TextView, а не в EditText.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: поделить строку в EditText
Если уж все-таки хочешь это делатЬ, то посмотри пример тут
http://cmikavac.net/2014/01/16/android- ... ormatting/
там в методе
setMacEdit()
есть строка
mMacEdit.removeTextChangedListener(this);
а так же по-моему учитывается то, что пользователь может "вдохновиться" и сам проставлять разделители при вводе/редактировании.
но все равно я думаю, что это лишнее.
http://cmikavac.net/2014/01/16/android- ... ormatting/
там в методе
setMacEdit()
есть строка
mMacEdit.removeTextChangedListener(this);
а так же по-моему учитывается то, что пользователь может "вдохновиться" и сам проставлять разделители при вводе/редактировании.
но все равно я думаю, что это лишнее.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: поделить строку в EditText
Чем же может бесить вполне адекватное разделение цифр? Если вводить 15 цифр подряд, то глаз банально не может определить как длину, так еще и вероятность получения ошибки вырастает на порядок. Будут использоваться именно пробелы.но вот когда редактируешь такой текст, то добавляемые символы-разделители ужасно путают ввод, а пользователя без клавиатуры (а даже и с клавиатурой) ужасно бесят.
789403678956745
789 403 678 956 745
Зачастую люди не уходят с поля, а сразу кликают по кнопке "done", либо по какой-то своей кнопке (т.е. они в обоих случаях находятся в фокусе EditText)а когда уходит с поля - то оно бы форматировалось.
ну думаю это не совсем обязательно, ибо генератор строки должен быть в onTextChanged, который в свою очередь сгенерирует опять таки удалённый пробел.Либо так, чтоб эти "пробелы" были нередактируемыми (проскакиваемыми).
Это мелочи. Мне интересно решение проблемы.
Спасибо, чуть позже гляну.Если уж все-таки хочешь это делатЬ, то посмотри пример тут
Re: поделить строку в EditText
у тебя свое видение, у меня свое. Я лишь его высказала.
я не говорила, что неудобно - удобен ПРОСМОТР. А вот ввод и редактирование, когда туда затесываются другие символы, которые ты не вводил - это не удобно. Особенно на планшете.
Иногда еще так делают. Вносишь символы, а сверху нередактируемый аналог TextView, где есть удобный форматнутый вид введенного значения.
или как всегда вводился код винды - в окошках по четыре символа.
я не говорила, что неудобно - удобен ПРОСМОТР. А вот ввод и редактирование, когда туда затесываются другие символы, которые ты не вводил - это не удобно. Особенно на планшете.
Иногда еще так делают. Вносишь символы, а сверху нередактируемый аналог TextView, где есть удобный форматнутый вид введенного значения.
или как всегда вводился код винды - в окошках по четыре символа.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: поделить строку в EditText
Это же полная жесть. Ну если я сделал ошибку, то я должен буду переводить свой взгляд с форматнутого вида в неформатнутый и искать ошибку. ИМХО, таких сразу бы отстреливать.Иногда еще так делают. Вносишь символы, а сверху нередактируемый аналог TextView, где есть удобный форматнутый вид введенного значения.
Я думал про код винды, но это немного не согласуется с самой сущностью "IMEI".
Я понял что это твое видение. Но читабельность куда более выше приоритетом, нежели удобство форматирования.
Кстати я понял что тут есть доля правды на счет пробелов, ибо пробел нельзя будет удалить, потому как код автоматически переформатируется и пробел обратно поставится. Буду думать.
Re: поделить строку в EditText
когда я экспериментировала с подобным форматированием суммы (где пробелы ставятся между каждыми тремя символами) и ее редактированием, то сразу отказалась от подобной расстановки пробелов. Вот где жесть.
С отстреливанием я бы не торопилась - ни в каких случаях. Каждого нужно пытаться ПОНЯТЬ, все имеет свою, скрытую от нас причину.
С отстреливанием я бы не торопилась - ни в каких случаях. Каждого нужно пытаться ПОНЯТЬ, все имеет свою, скрытую от нас причину.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: поделить строку в EditText
Я тебя умоляю, каждого понять...
viewtopic.php?f=50&t=4797 - вот его ты смогла понять?
viewtopic.php?f=50&t=4797 - вот его ты смогла понять?
Re: поделить строку в EditText
а там без расстрелов обошлось, не заметил?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: поделить строку в EditText
И очень зря. Глядишь, маркет бы бы почище.
Re: поделить строку в EditText
моя фраза в данной теме к маркету не относилась.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: поделить строку в EditText
Я прекрасно понимаю о чем ты говоришь (Прям занудство какое-то)
И если на то пошло, то я не спрашивал в теме вообще о том, правильно это или нет. Так что: мой топик к размышлениям о правильности данного подхода не относится.
И если на то пошло, то я не спрашивал в теме вообще о том, правильно это или нет. Так что: мой топик к размышлениям о правильности данного подхода не относится.
Re: поделить строку в EditText
а "если на то пошло" - перечитай мой ответ. Там было слово "имхо" и не было ни слова, чтоб переманить тебя в другой лагерь, убедить и как-то еще воздействовать лично на тебя. А высказывать свое мнение в каких угодно ветках мне никто не запретит.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: поделить строку в EditText
Кто же тебя запрещает, я просто указал на твою "нудистику"
Re: поделить строку в EditText
а зачем?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: поделить строку в EditText
Ясно всё. Нет смысла дальше дискуссировать. Всё равно не поможет.