その方法は本当に遅いですか?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 つの内部ビューを個別に制御できるようにする必要があります。上記は単なるコード例ですが、私が現在持っているものと非常に似ています。
助けてください!
ありがとう、レイ