3

这是我的问题,例如

我有一个定义对象 Receipt 的类,该类在 HashSet 中包含所有收据

public static Set<Receipt> allInstances = new HashSet<Receipt>();

这里我也有 getNumber()、getDate() 等所有的 getter

现在在 android 我想在 ListView 中显示收据我已经有类 public 类 ReceiptListFragment 扩展 ListFragment

这里 o OnCreate 方法我该怎么办?

我想要我的代码的最高性能 我已经看到了带有 ViewHolder 的 listview 和 arrayadapter 以在网络中获得最高性能代码

我真正的问题是因为我有一个带有对象的 HashSet,我无法在 getView 方法中的适配器类中获取 getNumber 来在 textview 中设置文本,这是我认为这样做的唯一方法

for(Receipt r : Receipt.allInstances){
TextView tv = (TextView) v.findViewById(R.id.receipt_row);
tv.setText("" + r.getNumber());

动态添加

但是这样做我没有使用适配器性能会怎样?也因为我有一个 HashSet 我没有位置也可能有重复的对象(这是正常的和有意的)

我应该像以前一样做一个循环并将所有哈希集传输到一个列表只是为了使用列表视图并执行 setListAdapter 这在性能方面看起来不是很好,因为对象的数量可能很高

就性能而言,最好动态地执行它或将所有对象传递到列表并使用带有视图的适配器等,就像那里的所有示例一样

还是有更好的解决方案?

4

1 回答 1

0

如果你想使用列表,你可以试试这个:

ArrayList<Receipt> receiptsList = new ArrayList<Receipt>(allInstances);

创建你adapterreceiptsList并使用setListAdapter(adapter). 看看这里:http ://www.vogella.com/articles/AndroidListView/article.html#listfragments

于 2013-03-03T02:13:35.470 回答