更新:Androidでは、(私が間違っている場合は正しく)ビューを表示するには、ビューに1つの親が必要であるように見えます。これは、ビューを共有できないという点で他の多くのUIシステムとは異なります。これが事実かどうか誰かが確認できますか?
私は広告ビューを持っています(ええ、私も広告が好きではありません)、それは2つの別々のリストビューに表示される必要があります。両方のリストビューにこの一般的な広告ビューを含めるにはどうすればよいですか。(広告ビューは、リストアダプターではなく、アクティビティによって維持されます)。片方に追加すると、もう片方から削除されます。追加すると、親は1つだけになると表示されるためです。そこで、他のリストビューでたまたま所有者である親を削除します。そのため、広告は一度に1つのリストにのみ表示されることになります。しかし、より一般的には、2つの別々のビューにそれぞれ共通の別のビューを含めるにはどうすればよいでしょうか。
簡単にするために、v1とv2の2つのビューがあり、画像とテキストを含むFrameLayoutである3番目のビューv3がある場合。このv3をv1およびv2からどのように参照する必要がありますか。v1とv3にv3を含めるだけですか?両方に指摘してもらいたいV3の特定のインスタンスですか?
これがmy_ad.xmlを共有したい広告です(ListAdaptersではなくMainActivityによって作成/膨張/更新されたことに注意してください):
<FrameLayout android:id="@+id/myAd">
<ImageView></ImageView>
</FrameLayout>
これが私のlist_view_1_rowです
<RelativeLayout>
......
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/myAdHolder" />
<include
android:id="@+id/myAdInclude"
layout="@layout/my_ad" />
</LinearLayout>
<RelativeLayout>
これがlist_view_2_rowです
<RelativeLayout>
...... ....
......
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/myAdHolder" />
<include
android:id="@+id/myAdInclude"
layout="@layout/my_ad" />
</LinearLayout>
<RelativeLayout>
それで、my_ad.xmlを膨らませて、MainActivityにそれへの参照を保持するとしましょう。
private FrameLayout myAdd;
onCreate()
myAd = (FrameLayout)inflater.inflate(my_ad.xml)
ここで知っておく必要があるのは、このビューINSTANCE(アクティビティによって拡張され、そのコンテンツがアクティビティによって管理される)を2つのリストビューの要素でどのように共有するかです。リストビューのアダプタ内で設定するにはどうすればよいですか。追加すると、Viewに複数の親が含まれていてはならないという問題が発生します。行アイテム内のビューへの参照を取得しようとすると。アダプタのViewHolder値をこの共通のビューインスタンスに設定するにはどうすればよいですか?
ListAdaptersではなく、アクティビティ内で広告を管理しているので、それぞれが独自のアダプターを持つ2つの別々のリスト内でアクティビティ管理ビューを共有したいと思いました。
ところで、adViewの追加を追加する以外に試したもう1つのことは、アダプター内でmyAdIncludeへの参照を取得しようとすることでしたが、これはnullとして返されました。それでも、どういうわけか実際に値を設定する必要があります......
ビューコンテンツの作成/更新が論理的にどちらかのリストビューに排他的に属していない場合に、2つ以上のリストビュー/アダプタによって共有されるビューを維持する方法についてのコメント/意見も欲しいですか?含まれているビューが更新されると、リストビューは自動的に更新されますか?