1

RelativeLayoutの上に があり、 の最初に表示されるアイテムの内容に基づいて、そのレイアウトが変更されることをListView期待しています。だから私は私のリストで使用しています:TextViewListViewonScrollListener

@Override
    public void onScroll(AbsListView view, int firstVisibleItem,
            int visibleItemCount, int totalItemCount) {
        if (adapter != null && adapter.getCount() > 0) {
            Transaction data = (Transaction) adapter.getItem(firstVisbileItem);
            Date date = data.getTransactionDate();
            date.setActualDate(date.getActualDate());
            String month = date.getMonthString(context);
            String year = date.getYear() + "";
            tvLeftValue.setText(month);
            tvRightValue.setText(year);
        }       
    }

これを使用するとリストのスクロールが非常に遅くなるのは本当に奇妙ですが、setText("")両方を使用しようとするTextViewと、リストは通常​​どおりスムーズにスクロールします。この問題は、Genymotion のエミュレーターではなく、実際のデバイス (Galaxy S3) でテストしたときに発生します。なぜこのような奇妙な問題が発生するのでしょうか。これに対する解決策はありますか?これに遭遇したことがある場合は、私を助けてください。事前に感謝します。

編集: 実際、これは Genymotion のエミュレーターでも発生します。実際のデバイスよりも高速なので、発生しないと思いました。

4

2 に答える 2

0

onScorll メソッドは非常に頻繁に呼び出されます。メインスレッドでやりすぎています。作業スレッドを使用して計算作業を行い、ハンドラーを使用して UI を更新してみてください。

于 2013-09-16T09:50:27.710 に答える
0

これにより、Simple TextView.setText で 40% の CPU 使用率が発生していた同様の問題が解決されました

基本的に、受け入れられた答えは、 TextView のサイズが変更された可能性があるため、テキストを設定するとレイアウト全体が強制的に更新されることを示唆しています。

解決策は、textView のサイズを修正することです。レイアウトによっては、幅を一致する親として引き続き使用できる場合があります。

<TextView
     android:layout_width="200dp"
     android:layout_height="32dp"
     android:ellipsize="end" />
于 2014-07-01T03:49:45.100 に答える