поделить строку в EditText

Ответить
Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

поделить строку в EditText

Сообщение Mikhail_dev » 08 окт 2014, 13:38

Что-то запутался, как стандартными средствами поделить строку в 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? Какие-то отдельные либы лучше не использовать.

Аватара пользователя
Foenix
Сообщения: 4200
Зарегистрирован: 20 окт 2012, 12:01

Re: поделить строку в EditText

Сообщение Foenix » 08 окт 2014, 13:55

конечно, какой-то визуальный вид для пользователя удобнее, но вот когда редактируешь такой текст, то добавляемые символы-разделители ужасно путают ввод, а пользователя без клавиатуры (а даже и с клавиатурой) ужасно бесят.

имхо, если и использовать какой-то формат у EditText, то так, чтоб когда пользователь вводит символы - то пробелов-черточек-прочего не было бы (т.е. при фокусировании-клике на тексте), а когда уходит с поля - то оно бы форматировалось. Либо так, чтоб эти "пробелы" были нередактируемыми (проскакиваемыми).
Не знаю, понятно ли выразилась. В виндах есть такое когда вводишь в поле символы там такая маска типа
_____.__ где ты не можешь поставить ничего в позицию точки.

Я не помню есть ли для этого способ, честно говоря.. надо подумать. Но я юзаю форматы для чисел (например, деньги) когда показываю текст уже готовый в TextView, а не в EditText.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4200
Зарегистрирован: 20 окт 2012, 12:01

Re: поделить строку в EditText

Сообщение Foenix » 08 окт 2014, 14:01

Если уж все-таки хочешь это делатЬ, то посмотри пример тут
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

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: поделить строку в EditText

Сообщение Mikhail_dev » 08 окт 2014, 14:07

но вот когда редактируешь такой текст, то добавляемые символы-разделители ужасно путают ввод, а пользователя без клавиатуры (а даже и с клавиатурой) ужасно бесят.
Чем же может бесить вполне адекватное разделение цифр? Если вводить 15 цифр подряд, то глаз банально не может определить как длину, так еще и вероятность получения ошибки вырастает на порядок. Будут использоваться именно пробелы.

789403678956745
789 403 678 956 745
а когда уходит с поля - то оно бы форматировалось.
Зачастую люди не уходят с поля, а сразу кликают по кнопке "done", либо по какой-то своей кнопке (т.е. они в обоих случаях находятся в фокусе EditText)
Либо так, чтоб эти "пробелы" были нередактируемыми (проскакиваемыми).
ну думаю это не совсем обязательно, ибо генератор строки должен быть в onTextChanged, который в свою очередь сгенерирует опять таки удалённый пробел.

Это мелочи. Мне интересно решение проблемы.
Если уж все-таки хочешь это делатЬ, то посмотри пример тут
Спасибо, чуть позже гляну.

Аватара пользователя
Foenix
Сообщения: 4200
Зарегистрирован: 20 окт 2012, 12:01

Re: поделить строку в EditText

Сообщение Foenix » 08 окт 2014, 14:17

у тебя свое видение, у меня свое. Я лишь его высказала.
я не говорила, что неудобно - удобен ПРОСМОТР. А вот ввод и редактирование, когда туда затесываются другие символы, которые ты не вводил - это не удобно. Особенно на планшете.
Иногда еще так делают. Вносишь символы, а сверху нередактируемый аналог TextView, где есть удобный форматнутый вид введенного значения.
или как всегда вводился код винды - в окошках по четыре символа.
R.id.team

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

Сообщение Mikhail_dev » 08 окт 2014, 14:27

Иногда еще так делают. Вносишь символы, а сверху нередактируемый аналог TextView, где есть удобный форматнутый вид введенного значения.
Это же полная жесть. Ну если я сделал ошибку, то я должен буду переводить свой взгляд с форматнутого вида в неформатнутый и искать ошибку. ИМХО, таких сразу бы отстреливать.
Я думал про код винды, но это немного не согласуется с самой сущностью "IMEI".

Я понял что это твое видение. Но читабельность куда более выше приоритетом, нежели удобство форматирования.
Кстати я понял что тут есть доля правды на счет пробелов, ибо пробел нельзя будет удалить, потому как код автоматически переформатируется и пробел обратно поставится. Буду думать.

Аватара пользователя
Foenix
Сообщения: 4200
Зарегистрирован: 20 окт 2012, 12:01

Re: поделить строку в EditText

Сообщение Foenix » 08 окт 2014, 14:50

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

С отстреливанием я бы не торопилась - ни в каких случаях. Каждого нужно пытаться ПОНЯТЬ, все имеет свою, скрытую от нас причину.
R.id.team

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

Сообщение Mikhail_dev » 08 окт 2014, 14:58

Я тебя умоляю, каждого понять...
viewtopic.php?f=50&t=4797 - вот его ты смогла понять? :-D

Аватара пользователя
Foenix
Сообщения: 4200
Зарегистрирован: 20 окт 2012, 12:01

Re: поделить строку в EditText

Сообщение Foenix » 08 окт 2014, 15:09

а там без расстрелов обошлось, не заметил?
R.id.team

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

Сообщение Mikhail_dev » 08 окт 2014, 15:11

И очень зря. Глядишь, маркет бы бы почище.

Аватара пользователя
Foenix
Сообщения: 4200
Зарегистрирован: 20 окт 2012, 12:01

Re: поделить строку в EditText

Сообщение Foenix » 08 окт 2014, 15:21

моя фраза в данной теме к маркету не относилась.
R.id.team

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

Сообщение Mikhail_dev » 08 окт 2014, 15:24

Я прекрасно понимаю о чем ты говоришь (Прям занудство какое-то)
И если на то пошло, то я не спрашивал в теме вообще о том, правильно это или нет. Так что: мой топик к размышлениям о правильности данного подхода не относится.

Аватара пользователя
Foenix
Сообщения: 4200
Зарегистрирован: 20 окт 2012, 12:01

Re: поделить строку в EditText

Сообщение Foenix » 08 окт 2014, 15:46

а "если на то пошло" - перечитай мой ответ. Там было слово "имхо" и не было ни слова, чтоб переманить тебя в другой лагерь, убедить и как-то еще воздействовать лично на тебя. А высказывать свое мнение в каких угодно ветках мне никто не запретит.
R.id.team

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

Сообщение Mikhail_dev » 08 окт 2014, 15:49

Кто же тебя запрещает, я просто указал на твою "нудистику"

Аватара пользователя
Foenix
Сообщения: 4200
Зарегистрирован: 20 окт 2012, 12:01

Re: поделить строку в EditText

Сообщение Foenix » 08 окт 2014, 15:59

а зачем?
R.id.team

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

Сообщение Mikhail_dev » 08 окт 2014, 16:07

Ясно всё. Нет смысла дальше дискуссировать. Всё равно не поможет.

Ответить