0

FragmentStatePagerAdapter を使用する Viewpager があります。各ページはフラグメントです。私のページには、デフォルトで表示される線形レイアウト (llTags) が含まれています。

ユーザーがページ (フラグメントのメイン レイアウト) をクリックした場合、linearlayout は非表示 (動作) である必要がありますが、他の linearlayout (他のページの llTags) も変更する必要があります。

クリックすると、前と次を除くすべてのページで線形レイアウトの表示が変更されました。これは、アダプターからの getItem が次/前のアイテムに対して再度呼び出されないためです。これらのページに通知するにはどうすればよいですか。

ps: アダプタから可視性を変更するための newInstance メソッドと public void setTagslayoutVisible(boolean) があります。

4

1 に答える 1

0

次と前はすでにロードされており、アダプターは作成を呼び出しません。

これを簡単に試してください。フラグメントが既にロードされている場合は、アダプターの get 関数でそれらのオブジェクトを返します。だから、このようなものを追加するだけです

if(myMap.containsKey(position))
{
      LiveStreamFullScreenFragment lfsf = (LiveStreamFullScreenFragment) myMap.get(position));
      lfsf.setShowTags(mShowTags);
      return lfsf;
} else
{

そしてあなたのフラグメントクラスで

public void setShowTags(boolean showtags)
{
    mShowTags = showtags;
    if(!mShowTags)
    {
         llLiveStreamTags.setVisibility(View.GONE);
    }
}

これが役に立ち、あなたの仕事を楽しんでくれることを願っています。

于 2013-05-15T11:00:51.030 に答える