0

何時間も検索しましたが、適切な解決策が見つかりませんでした。やりたいこと: ListFragment では、onListItemClick(...) メソッドを使用してクリック イベントを処理します。ここでは、行アイテムの背景を変更します。しかし、残念ながら onListItemClick(...) が呼び出されるたびに、アダプターからの getView() も呼び出され、8 つの表示されている行アイテムすべてが更新されます。これには時間がかかります: 0.5 秒です。行のレイアウトが非常に複雑であるため (2 つの画像、8 つの TextView)。そこで、クリックされた行だけを更新したい。このソリューションを使用したいのですが、他の 7 行の項目が更新されても効果がありません。私はすでにこれらのアドバイスに従ってリストをスピードアップしましたが、それでもまだ遅いです.

どんな助け、アイデア、考えも大歓迎です。:) ありがとうございました!

[編集]

いくつかの新しいアイデアを提供してくれた CommensWare に感謝します。私が今したことは、トレースビューが何を言っているのかを確認することでした。その結果、遅延は 2 つの部分に分割されます。遅延の最初の 300 ミリ秒は、22.000 を超える呼び出しで「FastXMLSerialzier.escapeAndAppendString()」を受け取ります。それはたくさんのようです!後半では、ビューとレイアウトの onMeasure() メソッドが多数、場合によってはすべて呼び出されます。

私が試したこと:すべてのテキストビューにアダプターの静的ダミー値を入力し、画像をロードしてその部分を除外しました。何も変わらず、traceview は同じ画像を表示します。2 回目の試行では、リスト アイテムの LinearLayout を調べ、見つかったすべての「wrap_content」を「match_parent」に置き換えましたが、何もありませんでした。まだ同じ。

私はまだあなたの考えやヒントを待っています。:)

4

1 に答える 1

0

いつ、どのくらいの頻度getView()で呼び出されるかを制御することはできません。

8 行を生成するのに実際に 500 ミリ秒かかる場合Viewsは、コードに問題があります。Traceview を使用すると、どこで時間を取っているかを具体的に判断できるため、パフォーマンスを改善するために何かを試みることができます (キャッシュなど)。

于 2012-11-06T12:53:25.707 に答える