【问题标题】:Android - Help needed with designing a screen with either table layout or list viewsAndroid - 需要帮助设计具有表格布局或列表视图的屏幕
【发布时间】:2012-01-05 06:52:03
【问题描述】:

我目前正在开发一个 Android 应用程序,该应用程序将与它的姊妹 iPhone 原型相对应。

我的任务是从 Android 中 iPhone 应用的设计模型重新创建屏幕,如下所示:

在活动中复制此屏幕时使用的最佳布局/视图是什么?

谢谢。

【问题讨论】:

  • 你认为这里面可能有多少项目?十?数百?几千?
  • 因为它现在只是一个概念证明,它只需要处理最少量的条目。绝对不是成百上千。

标签: java android listview android-layout tablelayout


【解决方案1】:

你的问题并没有弄清楚一些事情。另外,我不同意 Ted Hopp 的回答。我相信他是在假设药物将被静态填充,或者类似的东西。

从您的应用程序的外观来看,我假设您将动态填充内容,可能同时使用多种药物,或者根本不使用药物。通过 iPhone 模型中的箭头,我还假设您希望根据所选药物执行操作。

说了这么多,我会使用ListView。我的一般概念(我可能会使用的那个)是这样的:

您有数据源,并使用 Loader/LoaderManager/etc。将其填入Cursor。我会将此光标提供给CursorAdapter(可能是SimpleCursorAdapter,通过查看该UI 概念,这似乎很可能而且很容易——不需要自定义适配器部分本身)。最后,这个适配器将用于ListView。这相当简单,不需要太多代码(ListView-SimpleCursorAdapter-Cursor 的东西,数据逻辑当然是自定义的)。

然后,您可以使用正确的 ListView 侦听器 IIRC 来管理您的每次点击。并根据所选项目采取相应行动。我猜用户会,例如,startActivity 来查看每种药物的详细信息。

但是,正如我所说,如果您有固定数量的药物(这里说的是一位经验丰富的前白血病患者,所以我总是认为药物差异很大!),一个 TableLayout 就可以了,但我觉得不是情况。

啊,关于每个组件/药物的布局,正如我所说,一个简单的布局就可以了。可能是水平方向的LinearLayout。同样,使用SimpleCursorAdapter 实现非常简单。

【讨论】:

  • 感谢您的反馈,大卫。您是正确的,最终列表将从外部数据源动态填充。点击每个项目将启动一个新活动,其中包含每个 Rx 的详细信息。最初我一直在搞乱表格布局,但列表视图(或 Ted 建议的多列列表视图)似乎更容易走。
  • 对于模型,照他说的做。但是,如果您曾经实现过真实的东西,我强烈建议您实现一个加载器,它可以是游标加载器(可能是因为它处理典型数据)或其他任何东西。而且,说实话,他使用的内容涉及自定义 BaseAdapter,这涉及一些较低级别的编码(项目位置、getItem、项目 ID、项目计数、很多东西)。如果您使用 CursorAdapter,您只需要实现 createView(一行代码)和 bindView(您实际上使用自定义布局进行操作)。
【解决方案2】:

有一个很好的例子来说明如何使用自定义行视图here 做到这一点。这可能是最干净的方法。

为此最接近的内置小部件是TableLayout。请查看Hello Views 教程项目,了解此操作的示例。您可能希望将其包装在 ScrollView 中。

【讨论】:

  • 感谢特德的文章!我会看看并尝试一下。
【解决方案3】:

正确的方法高度依赖于需求。在我看来,您(至少)有几个选择:

  • 表格布局
  • 列表视图
  • 定制的东西

正如 David 所指出的,如果您有一组固定的数据,TableLayout 是最合适的,但您也可以通过添加子视图使其动态工作。使用 TableLayout 的好处主要是内置的列实现,包括基于内容的动态列大小。缺点是缺乏内置的动态支持,尤其是在处理大型数据集时。

ListView 更适合动态和大型数据集,但存在不支持列的限制。 Ted 的链接可让您模拟列,但与 TableLayout 不同的是,这些列具有固定宽度(以父宽度的百分比表示)。列的大小不是基于内容。您可能会尝试做一些事情来衡量所有孩子,但这会很棘手。尝试处理 ListView 中的标头也可能有点烦人,尽管稍作搜索,您会发现大量资源可以帮助您解决此问题。

第三个选项是推出您自己的AdapterViewAbsListView。当然,这涉及大量工作,但您可以查看 TableLayout 的工作原理并根据内容调整列的大小。这也将使您支持适配器以及随之而来的所有好处。不过,这可能需要做很多工作,尤其是根据内容调整列的大小。

考虑您的列是否必须调整大小以适应其内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2011-01-07
    • 1970-01-01
    • 2012-03-05
    相关资源
    最近更新 更多