3

Recyclerview内で複数のリサイクルを管理する際に問題が発生しましたNestedScrollView。私がやろうとしていることを教えてください -

  1. frame1 と frame2 の 2 つのフレーム レイアウトがあります。
  2. recyclerview を含む 2 つのフラグメントがあります。最初のフラグメントの recyclerview はアイテムを水平方向に表示し、2 番目のフラグメントの recyclerview はリストを垂直方向に表示します。
  3. 今、両方を に入れましFrameLayoutたがNestedScroolView、frame1 recyclerview はすべてのビューを適切にリサイクルしていますが、frame2 recyclerview はビューをリサイクルしていません。理由はわかりませんか? 最初にすべてのアイテムをロードしてから画面に表示します。

いくつかのコード:

MainActivity.java

 FragmentTransaction transaction;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentA frag1=new FragmentA();
FragmentB frag2=new FragmentB();
transaction =    getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.frame1, frag1);
    transaction.addToBackStack(frag1.getClass().getName());
    transaction.commit();

 transaction =   getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.frame2, frag2);
    transaction.addToBackStack(frag2.getClass().getName());
    transaction.commit();
}

main.xml

  <LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

 <android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">
  <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <FrameLayout
            android:id="@+id/frame1"
            android:layout_width="match_parent"
            android:layout_height="185dp" />

        <FrameLayout
            android:id="@+id/frame2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
             />

</LinearLayout>
</android.support.v4.widget.NestedScrollView>
    </LinearLayout>

フラグメントA:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v= inflater.inflate(R.layout.recycler_view, container, false);
    mDataListView = (RecyclerView) v.findViewById(R.id.data_list_view);
    mDataListView .setHasFixedSize(true);
    final GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), getActivity().getResources().getInteger(R.integer.playlist_categories_columns), GridLayoutManager.VERTICAL, false);

    mDataListView .setNestedScrollingEnabled(false);
   }
    }));


    return v;
}

フラグメント B :

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v= inflater.inflate(R.layout.recycler_view, container, false);
    mDataListView = (RecyclerView) v.findViewById(R.id.data_list_view);
    mDataListView .setHasFixedSize(true);
     final GridLayoutManager gridLayoutManager = new    GridLayoutManager(getActivity(), 1, GridLayoutManager.HORIZONTAL, false);
    mDataListView .setLayoutManager(gridLayoutManager);

    mDataListView .setNestedScrollingEnabled(false);
   }
    }));


    return v;
}

recycler_view.xml

 <?xml version="1.0" encoding="utf-8"?>
 <android.support.v7.widget.RecyclerView    xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/data_list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />

私の質問が明確であることを願っています。

4

1 に答える 1