是否可以在文本视图中对数据进行排序?

Posted

技术标签:

【中文标题】是否可以在文本视图中对数据进行排序?【英文标题】:Is it possible to sort data in a textview? 【发布时间】:2015-09-19 00:26:26 【问题描述】:

我正在使用“Codeofaninja”。 android table scroll code

他生成数据。我用一个 sqlite 数据库替换了它。它运作良好,但... 我需要排序,显示的是带有表格的文本视图。 我应该使用 listviews 而不是 textviews/tablerows 吗? 我已经看到在集合中对数据进行排序的示例。我已经在列表中有我的数据,但我读过 textviews 有性能问题。 如果答案是列表视图,那么我必须重新设计我试图不做的视图。但如果技术说我必须如此,那就这样吧。 所以我想出了2个选择: 1:文本视图在任何数据操作后重新填充列表。 2:listview 是处理数据然后存储回数据库的地方。那我需要在relativelayout视图中放一个listview吗?

我已尝试从 textview 中删除表格行并重新读取数据,但这证明很慢。

我搜索了 textviews 和 listviews 并看到了很多示例,但仍然不清楚哪种方法是首选。 感谢您的意见。

【问题讨论】:

【参考方案1】:

这个想法是排序独立于视图。您首先对集合(列表、数组等)中的数据进行排序,然后使用 ListAdapter(或 ArrayAdapter、.etc)来填充视图。

根据您的描述,似乎每次都会重新创建文本视图,即,如果您有 10 行,每行有 3 个文本视图,您是否创建了 30 个文本视图?在这种情况下,肯定它有性能问题。尝试阅读 ViewHolder for ListView Android Viewholder implementation

【讨论】:

我生成了 100 个数据库记录,这相当于 300 个文本视图。当我第一次开始这个设计时,我没有掌握 listview 与 textview 的过程。您在此处的回答确认 listview 是标准或应该是标准。所以这是一个很好的坚实方向。我总是假设我可以加载和抛出任何我认为合适的数据。 我将此标记为答案,因为我注意到了性能问题。这个答案阻止了我进一步尝试围绕 textview 使用编写更多代码。 我让用户可以选择按标题标签来按 asc 或 desc 排序。然后整个视图显示新结果。因此,根据您在此处所说的,标签印刷机然后对数组进行排序并重新显示数组。通过使用上一个答案的设置,列表视图将根据更改事件触发器自动显示。 可以,只需要调用适配器的notifyDataChanged函数即可。其余的都是自动的【参考方案2】:

使用一次加载一些数据的想法更好。 Android ListViewRecyclerView 都会在需要时虚拟加载数据,并在不再需要时删除数据。 关于 ListView @Populating a ListView With Data 的一篇很好的教程。告诉我们你的想法。

这些 GUI 类的唯一缺点是当您的帖子中只有少量数据要显示时,这不太可能。

【讨论】:

相同的评论适用于这里的两个答案。 [ 我生成了 100 条数据库记录,相当于 300 个文本视图。当我第一次开始这个设计时,我没有掌握 listview 与 textview 的过程。您在此处的回答确认 listview 是标准或应该是标准。所以这是一个很好的坚实方向。我总是假设我可以加载和抛出任何我认为合适的数据。] 我卡住的原因是布局是动态构建的。我试图保持这种设计,因为我有另一个表生成的列数。 我喜欢这个答案。这个答案确实是次要的,这意味着我必须在实现排序数组后使用它。 @PaulMoore,不要担心数组排序。您可以选择像 Collections.sort() 进行排序或使用使用 SQL 进行排序的 CursorLoader 类。 @PaulMoore,对于布局问题和排序,请为他们发布另一个问题。顺便说一句,构建可变列的动态布局更加困难。我建议现在做一个少列的布局,实际上它们是 ListView UI 中的几个 UI 元素。

以上是关于是否可以在文本视图中对数据进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Drupal 7 的视图中对自定义字段进行排序或过滤

如何在 Windows 8.1 应用程序中对 XAML 网格视图进行排序?

是否可以在 MS Access 中对设计视图进行密码保护?还是通过代码?

在 WPF 中对 DataGrid 进行预排序

在 Eloquent 中对时间戳进行排序

如何在 ASP.NET MVC 视图中对数据进行分组?