使用数据列表或使用 RecyclerView 为对象生成视图?
Generating views for object with lists of data or using RecyclerView?
我有一个详细信息 Activity。假设我有这个对象,我想向用户展示。
public class Dummy {
private String name;
private ArrayList<String> telephoneNumbers;
private String somethingElse;
}
请注意,这只是一个例子来说明我的观点。实物要复杂得多
现在,因为我需要在顶部显示名称,所以电话phone 号码列表在其自己的视图中垂直堆叠,在它们下方我想要其他内容。
这意味着我有两个选择。
1.以编程方式将视图生成到某些 ViewGroup
<LinearLayout orientation="vertical">
<name />
<LinearLayout orientation="vertical">
Here I will programmatically generate one view per telephone number
</LinearLayout>
<somethingElse />
</LinearLayout>
这种方法非常简单。但缺点是当我将有 100 个 phone 数字时 - 由于 100 个可能复杂的布局、100 个点击侦听器或我在这里要做的任何事情,性能低下。
(还有附带问题 - 这可能与 Android Data binding 相关吗?)
2。全部使用 RecyclerView
编写一个适配器应该不难,它采用一个实例并使用三种类型的 viewHolders(一种用于名称,另一种用于电话 phone 号码,第三种用于 somethingElse)
ItemCount 将为 telephoneNumbers.size() + 2。
然后剩下要做的就是为每个适配器位置做一些计算,以创建适当的 viewHolder 并将数据绑定到它。
你们认为最好的方法是什么?
我觉得你应该用方法二,首先,我已经做过类似的事情,如果你能做方法一,你实现方法二就不难了。
最重要的是,您可能已经自己回答了,如果您打算支持 100+ phone 个数字,方法 1 可能会引入性能问题。
方法 2 的代码更清晰。
我有一个详细信息 Activity。假设我有这个对象,我想向用户展示。
public class Dummy {
private String name;
private ArrayList<String> telephoneNumbers;
private String somethingElse;
}
请注意,这只是一个例子来说明我的观点。实物要复杂得多
现在,因为我需要在顶部显示名称,所以电话phone 号码列表在其自己的视图中垂直堆叠,在它们下方我想要其他内容。
这意味着我有两个选择。
1.以编程方式将视图生成到某些 ViewGroup
<LinearLayout orientation="vertical">
<name />
<LinearLayout orientation="vertical">
Here I will programmatically generate one view per telephone number
</LinearLayout>
<somethingElse />
</LinearLayout>
这种方法非常简单。但缺点是当我将有 100 个 phone 数字时 - 由于 100 个可能复杂的布局、100 个点击侦听器或我在这里要做的任何事情,性能低下。
(还有附带问题 - 这可能与 Android Data binding 相关吗?)
2。全部使用 RecyclerView
编写一个适配器应该不难,它采用一个实例并使用三种类型的 viewHolders(一种用于名称,另一种用于电话 phone 号码,第三种用于 somethingElse)
ItemCount 将为 telephoneNumbers.size() + 2。 然后剩下要做的就是为每个适配器位置做一些计算,以创建适当的 viewHolder 并将数据绑定到它。
你们认为最好的方法是什么?
我觉得你应该用方法二,首先,我已经做过类似的事情,如果你能做方法一,你实现方法二就不难了。
最重要的是,您可能已经自己回答了,如果您打算支持 100+ phone 个数字,方法 1 可能会引入性能问题。
方法 2 的代码更清晰。