Android で ListView が複数回更新された後に getView が繰り返し実行される問題の解決方法

高洛峰
リリース: 2017-01-20 15:30:00
オリジナル
1661 人が閲覧しました

今回はレイアウトがより複雑だったので、リストビューの getView が複数回実行されることに気づきませんでした。テスト中にブレークポイントの追跡に行ったところ、同じデータが繰り返し実行されていることがわかりました。おかしいと思ったのでネットで調べてみました。インターネット上の説明も基本的に同じで、ListView をレイアウトするときに高さも幅も fill_parent ではないため、高さの計算と更新が継続的に行われます。または、その親コン​​テナが fill_parent に設定されていません。

レイアウトが複雑すぎる場合、fill_parent に従ってすべてを調整するのは非現実的です。そこで私は、高さを動的に固定するという別の解決策を考えました。
プログラム実行後、ListViewの高さを固定し、Item情報を初期化します。

private void fixedListView(){ 
listView = (ListView) findViewById(R.id.listview); 
ViewGroup.LayoutParams params = listView.getLayoutParams(); 
layout = (HorizontalScrollView) findViewById(R.id.layout); 
params.height = layout.getHeight(); //需要设置的listview的高度,你可以设置成一个定值,也可以设置成其他容器的高度,如果是其他容器高度,那么不要在oncreate中执行,需要做延时处理,否则高度为0 
listView.setLayoutParams(params); 
}
ログイン後にコピー

このようにして、ListView の更新速度が大幅に高速化されたことがわかりました。同僚は、Item のテキスト入力 EditText に addTextChangedListener(new TextWatcher() のリスナーがある場合) にリスニング コードが複数回実行される問題も解決しました。

ListView の複数回の更新の問題の解決策に関するその他の関連記事については、 Android および getView の繰り返し実行については、PHP 中国語 Web サイトに従ってください

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!