Лучший графический интерфейс, чтобы позволить пользователю редактировать список строк в Android? - PullRequest
0 голосов
/ 10 февраля 2012

Предположим, мне нужно, чтобы пользователь мог вводить список строк где-то в настройках приложения. Скажем, это список URL. Внутри строк не должно быть пробелов, запятых или точек с запятой.

Самая простая вещь, о которой я до сих пор думал, - это создать большой многострочный EditText с подсказкой для пользователя «Разделять строки пробелами», и каждый раз, когда пользователь нажимает OK, использовать split («») для извлечения массива строк.

Проблема с этим простым решением состоит в том, что иногда строки не достаточно длинные, чтобы заполнить всю ширину EditText, и> 1 строки отображаются визуально в 1 строке. Иногда URL-адреса слишком длинные, поэтому "www." остается на одной строке, а остальная часть адреса появляется на следующей строке. Все выглядит беспорядочно, и пользователь теряет отслеживание, где отдельные URL начинаются и заканчиваются в строке.

Еще одно простое решение: длинный однострочный, где все строки разделены; с дополнительными пробелами после. VisualStudio использует это в настройках, и я нахожу это плохим, так как вы не видите все строки сразу и вынуждены много двигаться в этой длинной строке (еще труднее с неуклюжим сенсорным экраном).

Более дорогое решение: вертикально прокручиваемый список однострочных EditTexts, которые генерируются программно при каждом открытии экрана настроек. Также потребуется кнопка «+», которая создает новый EditText, и кнопка «-» рядом с каждым из существующих EditText.

РЕДАКТИРОВАТЬ: Другая идея: показать все строки в обычном ListView с кнопкой «+» в последнем ряду. Когда вы нажимаете «+», он превращается в EditText с двумя кнопками справа: «ОК», «Отмена». «ОК» сохранит вновь добавленную строку. Если пользователь нажимает на любой из элементов в списке, строка превращается в EditText с кнопками «ОК» и «Удалить». «ОК» сохраняет изменения, «Удалить» удаляет элемент. На кнопках «ОК» и «Удалить» лучше использовать слова вместо слов.

Или, ну, все строки могут быть показаны в ListView, и каждый раз, когда пользователь нажимает на элемент, появляется дополнительное всплывающее окно с EditText для редактирования строки и тремя кнопками ниже: «ОК», «Отмена» и "Удалить".

Думал ли я в правильном направлении? Знаете ли вы какие-либо существующие шаблоны / библиотеки / решения, которые эффективно решают эту проблему на сенсорных экранах?

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Было бы лучше иметь только один editText, где пользователь может устанавливать значения в списке один за другим и видеть добавленные значения в listView. Возможно, имеется некоторое положение для кнопки для сохранения всех введенных данных.См. Следующую ссылку один раз,

http://www.mubasheralam.com/tutorials/android/listview-transcript-mode

1 голос
/ 10 февраля 2012

IMHO сенсорные экраны не предназначены для интенсивного письма, поскольку сенсорные клавиатуры очень хороши для написания слишком длинных или слишком много символов (например, языка программирования или URL). Не думайте о сенсорных приложениях, таких как старые настольные приложения / системы. Возможно, вам следует переосмыслить свой дизайн и попытаться избежать ввода данных.

Если это то, без чего ваше приложение не может жить, или вы все равно хотите сделать это так:

  • Я думаю, что разделитель новой строки более понятен, чем пробел или ";" (при условии, что URL не могут содержать ";" кстати ...).
  • Как насчет одного EditText для каждого URL, генерируя EditTexts программно по мере заполнения предыдущего.
...