12

listView のビューをインフレートするとき、.xml ファイルに android:text を含まないすべての textView を使用する方が良いですか?それは速度にどの程度影響しますか? ViewStubs はどうですか?

Android:text を使用せず、Android:text="@string/abc" を使用して 8 つの textViews を使用して LinearLayout を膨張させると、何かが変わりますか? 私はビューを再利用していることに注意してください.10個だけが膨らんで再利用されるかもしれません.

私はZTE Bladeで開発しているので、クアッドコアではなく単一の600Mhz CPU...

4

3 に答える 3

8

これを試すことができますが、速度が上がるかどうかはわかりませんが、試してみてください。

バックグラウンド スレッドでレイアウトをインフレートします。

View getView(int position, View convertView, ...) {
    View v;
    if (convertView == null) {
        Start a background thread to inflate your linearLayout. 
        Pass item data and view 'v' to it.

        v = inflate a simple dummy textview;
        return v;
    }
    set normal stuff to convertview here.
    return convertView ;
 }

バックグラウンドスレッドでは、

  • Linearlayout をに膨らませます'v'
  • すべてのデータを設定します。
  • 次に、ビューを無効にしますv

    v.postInvalidate();
    
于 2012-08-02T14:43:55.043 に答える
3

これは、リスト ビュー、特にビュー ホルダー ビットを高速化する場合に非常に役立ちます: http://developer.android.com/training/improving-layouts/smooth-scrolling.html

私も ZTE Blade を持っていますが、それらは遅いですが、それでうまく動作するアプリは、「通常の」電話で驚くほど動作します :)

于 2012-07-26T15:13:51.157 に答える
3

とにかくテキストビューのテキストを置き換える場合は、わざわざ XML 内に入力する必要はありません。

単純なリストビュー内で実行したくなるパフォーマンスの真のキラーは、ネストされた線形レイアウトです。ちょっとした作業で、linearlayout ツリーを relativelayout に置き換えることができます。

ViewHolder スタイルを使用するか、単に view.setTag(R.id.resId, findViewById(R.id.resID)) で設定して、if (convertView == null) { ブロックの外で findViewById を使用していないことを確認してください。

asynctask から戻るときに遅延が発生しているとコメントで述べました。各エントリの後にテーブルをリロードしていないことを確認してください。データ ソースの一括更新を実行してから、テーブルを再読み込みします。

于 2012-08-06T05:42:19.747 に答える