3

これが私の問題です、例えば

オブジェクトReceiptを定義するクラスがありますこのクラスにはHashSet内のすべてのレシートがあります

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

ここには、getNumber()、getDate()などのすべてのゲッターもあります

今アンドロイドで私はリストビューでレシートを表示したい私はすでにクラスパブリッククラスを持っていますReceiptListFragmentはListFragmentを拡張します

ここでoOnCreateメソッドは何をしますか?

コードのパフォーマンスを最大にしたいWebでパフォーマンスコードを最大にするために、ViewHolderを使用したlistviewとarrayadapterをすでに見ました

私の本当の問題は、getViewメソッドのアダプタクラスに取得できないオブジェクトを含むHashSetがあるため、getNumberを使用して、テキストビューにテキストを設定することです。

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);

で作成adapterし、receiptsListを使用しますsetListAdapter(adapter)。こちらをご覧ください: http://www.vogella.com/articles/AndroidListView/article.html#listfragments

于 2013-03-03T02:13:35.470 に答える