2017-03-01 9 views
0

私はActivityを持っていて、ListViewには簡略TextViewsを含む断片があります。メニュー項目は、インテントを通じて別のActivityをトリガーすることができます。新しいActivityListViewArrayAdapterの下にあるArrayListArrayList.clear()で消去します。Android ListView.getChildCount()より大きいgetCount()

I ListViewと私の元に新しいActivityからバックアップ、およびonResume()で制御を取得するには、私は私のListView.getChildCount()は、それが原因テントに残っていたときと同じですが、ListView.getCount()が正常になりましゼロであることを見つけます!

私はアダプターのclear()メソッドを試してみましたが、私はAdapter.notifyDataSetChanged()を試しました(私はそうするべきではありませんが)。

フラグメント自体の内部から基礎となるArrayListを変更すると、すべて問題なく動作します。たとえば、要素をクリックすると、要素を削除したり、上または下に移動したりすることができます。これは正常に動作します。

また、リストActivityを残してもう一度戻っても、すべて正常です。したがって、ArrayListは同じリストです。私は決して新しいリストを作成しません。 clear()です。

子カウントが基本要素数を上回る可能性はありますか? Activityが一時停止されているため、おそらくArrayListの何らかのオブザーバがトリガされませんか?どのようにすれば、どうすればそれらを再び同期させることができますか?私は例えばinvalidate()を試しました。

これはAPI23の下にあります。

答えて

-1

回避策が見つかったようです。私は、別の投稿hereがスレッドの安全性について議論していることに気付きました。元のUIからリストを変更しないと、意味があるようです。だから、私のonResume()では、ちょうどsetAdapter()をやりました。同じアダプタとリスト、そしてビオラ!すべては再びよく見える。

関連する問題