我正在构建一个聊天应用程序。
在我的聊天消息视图中,我有一个 Activity,它呈现最后 20 条消息并以编程方式将它们添加到 ScrollView。
它实际上工作得很好而且很快。
完成它后,我停下来思考并意识到我可以使用 ListView 更轻松(并且可能更有效)完成它。
这是真的吗?我应该努力将视图更改为 ListView 吗?
我正在构建一个聊天应用程序。
在我的聊天消息视图中,我有一个 Activity,它呈现最后 20 条消息并以编程方式将它们添加到 ScrollView。
它实际上工作得很好而且很快。
完成它后,我停下来思考并意识到我可以使用 ListView 更轻松(并且可能更有效)完成它。
这是真的吗?我应该努力将视图更改为 ListView 吗?
我会说是的一个主要原因:ListView
回收屏幕上显示的视图,使其非常有效。由于它会在较小的屏幕上容纳 6 或 7 个视图,并重复使用这些视图,因此它比说 20 个视图占用内存要高效得多。至于更容易,这可能是有争议的。但绝对推荐 ListView。ScrollView 可能感觉很快,但您还必须考虑设备和其他应用程序的性能。
我的应用程序中有一个聊天功能,我使用适配器将消息填充到列表视图中。下面是我的 xml 布局的示例:
消息.xml
<LinearLayout
<TextView </TextView>
<ListView </ListView>
</LinearLayout>
message_item.xml
<RelativeLayout>
<LinearLayout>
<LinearLayout>
<LinearLayout>
<LinearLayout>
<TextView></TextView>
<TextView></TextView>
</LinearLayout>
<TextView></TextView>
</LinearLayout>
<ImageView></ImageView>
</LinearLayout>
</LinearLayout>
<TextView></TextView>
</RelativeLayout>
我希望这会有所帮助:)
可以扫描android源码,了解ListView是如何实现的。
我想你会在那之后找到你的答案。
ics/framework/base/core/java/android/widget/ListView.java
我认为,是的,由于它的属性,使用 listView 会更有效。并且您对滚动视图所做的操作与 ListView 具有相同的功能。我认为你正在改造轮子。这是一个很好的例子:)