0

BaseAdapter を含む ListView があり、各行には水平の ListView (AdapterView のみ) が含まれています。KitKat (Android 4.4) が ListView 内のいくつかの行を展開する前に、ListView 全体に対して getView() をトリガーし、この行のすべての内部アダプター項目に対して getView() を呼び出すことにつながります。しかし、キットカットを開始すると、このようには機能しなくなります。内部アダプターは、ビューを更新するように導くメッセージを受信しません。

それはキットカットの最適化の一部ですか? Android に内部アダプター ビューを手動で更新させる必要がありますか?

更新: Android 4.3 を搭載した Nexus 7 でも同じ問題 (内部アダプター ビューで getView() をトリガーしない) が見つかりました。

4

1 に答える 1

1

ListView の BaseAdapter の getView() 内に次のブロックを追加して、最終的に終了しました。

if(Build.VERSION.SDK_INT >= 18) {
  parent.post(new Runnable() {
    @Override
    public void run() {
      (<inner adapter>).notifyDataSetChanged();
    }
  });
}
于 2013-12-04T05:31:25.213 に答える