Android - требуется помощь при разработке экрана с макетом таблицы или списком - PullRequest
2 голосов
/ 24 ноября 2011

В настоящее время я разрабатываю приложение для Android, которое должно быть аналогом прототипа его родного iPhone.

Моя задача - воссоздать экран из макета дизайна из приложения iPhone в Android, как показано здесь:

iPhone prototype

Какие макеты / представления лучше всего использовать для репликации этого экрана в упражнении?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 24 ноября 2011

Ваш вопрос не проясняет некоторые вещи.Кроме того, я не согласен с ответом Теда Хоппа.Я полагаю, что он предполагает, что лекарства будут заполняться статически, или что-то в этом роде.

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

Все, что сказано, я бы использовал ListView.Моя общая концепция (которую я, вероятно, использовал бы) была бы такой:

У вас есть источник данных и вы используете Loader / LoaderManager / etc.чтобы заполнить это в Cursor.Я бы подал этот курсор на CursorAdapter (возможно, SimpleCursorAdapter, что кажется вероятным и простым, если взглянуть на эту концепцию пользовательского интерфейса - не нужно будет настраивать саму часть адаптера).Наконец, этот адаптер будет использоваться в ListView.Это довольно просто и не потребует много кода (ListView-SimpleCursorAdapter-Cursor, логика данных, безусловно, настраиваемая).

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

Однако, как я уже сказал, если у вас есть фиксированное количество лекарств (здесь говорит опытный бывший лейкозпациент здесь, так что я всегда предполагаю, что лекарства сильно различаются!), подойдет один TableLayout, но я чувствую, что это не так.

А, а как насчет схемы для каждого компонента / мед, как я сказалпростой макет будет делать.Вероятно, LinearLayout с горизонтальной ориентацией.Опять же, очень просто реализовать с SimpleCursorAdapter.

0 голосов
/ 24 ноября 2011

Правильный подход в значительной степени зависит от требований.На мой взгляд, у вас есть (по крайней мере) несколько вариантов:

  • TableLayout
  • ListView
  • Что-то нестандартное

AsДэвид отметил, что TableLayout наиболее подходит, если у вас есть фиксированный набор данных, но вы можете заставить его работать слишком динамически, просто добавив дочерние представления.Преимущество использования TableLayout заключается в основном в встроенной реализации столбцов, в том числе в динамическом размере столбцов в зависимости от содержимого.Недостатком является отсутствие встроенной динамической поддержки, особенно при работе с большими наборами данных.

ListView лучше подходит для динамических и больших наборов данных, но имеет ограничение на отсутствие поддержки столбцов,Ссылка Теда позволяет имитировать столбцы, но в отличие от TableLayout эти столбцы имеют фиксированную ширину (в процентах от ширины родителя).Размер столбцов не зависит от содержимого.Вы могли бы потенциально попытаться сделать что-то, чтобы измерить всех детей, но это было бы сложно.Также может быть немного раздражает попытка разобраться с заголовками в ListView, хотя при небольшом поиске вы найдете множество ресурсов, которые помогут вам в этом.

Третий вариант - свернуть свой собственный AdapterView или AbsListView .Конечно, это требует значительного объема работы, но вы можете взглянуть на то, как работает TableLayout, и изменить размеры столбцов в зависимости от содержимого.Это также даст вам поддержку для адаптеров и все преимущества, которые идут вместе с этим.Это, вероятно, довольно трудоемкий процесс, особенно изменение размера столбцов в зависимости от содержимого.

Подумайте, нужно ли изменять размер столбцов, чтобы соответствовать их содержанию.

0 голосов
/ 24 ноября 2011

Вот хороший пример того, как сделать это с помощью пользовательского представления строки здесь .Это, вероятно, самый чистый путь.

Ближайший встроенный виджет для этого - TableLayout .Взгляните на учебный проект Hello Views для примера этого в действии.Возможно, вы захотите обернуть его в ScrollView .

...