0

その方法は本当に遅いですか?ListView とカスタム アダプターがあり、リストに次のサンプル XML が入力されます。

<RelativeLayout>
    <TextView />
    <View />
    <TextView />
    <RelativeLayout>
        <View android:id="@+id/1" />      <--Take note of this one
        <TextView android:id="@+id/2" />  <--And this one too
    </RelativeLayout>
</RelativeLayout>

ListView 自体はスムーズに動作し、スクロールもスムーズで、読み込みも問題ありません。ListView の機能には、行がクリックされたときの 2 つの入れ子になったビュー (メモを取るようにマークしたもの) の表示の切り替えが含まれます。デフォルトでは、次のプロパティで設定されています。

android:visibility="gone"

私がしていることは、2 つのビューの可視性を確認し、それに応じて可視性のステータスを切り替えることです。たとえば、次のようになります。

View v = findViewById(R.id.1);
TextView tv = (TextView) findViewById(R.id.2);

if (v.getVisibility() == View.VISIBLE) {
    v.setVisibility(View.GONE);
    tv.setVisibility(View.GONE);
} else {
    v.setVisibility(View.VISIBLE);
    tv.setVisibility(View.VISIBLE);
}

現在、これはすべて正常に行われており、バグはありません。それに応じてビューが切り替わります。しかし、ここでの質問は、UI が非常に遅いのはなぜですか? コードを 1 行ずつコメントアウトしてみましたが、2 つの setVisibility() メソッドが原因であることは明らかです。それはいつもとても遅いのですか、そして私が物事をスピードアップできる方法はありますか?

また、RelativeLayout ラッパーの可視性を単純に切り替えることはできません。2 つの内部ビューを個別に制御できるようにする必要があります。上記は単なるコード例ですが、私が現在持っているものと非常に似ています。

助けてください!

ありがとう、レイ

4

2 に答える 2

2

それについてはわかりませんが、リストに多くの要素がある場合、システムはそれらすべてを処理して可視にする必要があります。これが、非常に時間がかかる理由です。GONE を使用する代わりに、INVISIBLE を使用してみましたか?

于 2013-06-14T03:17:04.003 に答える
-4

View.VISIBLEと を使用する代わりView.VISIBLEView.GONE.

于 2013-06-14T03:16:20.407 に答える