複数のRecyclerview
リサイクルをNestedScrollView
の中で管理する際に問題が発生しました。私が何をしようとしているのか教えてあげてください。NestedScrollView内で複数のRecyclerviewでリサイクルが発生しない
- 私はframe1とframe2という2つのフレームレイアウトを持っています。
- 私はrecyclerviewを含む2つのフラグメントを持っています。最初のフラグメントのrecyclerviewはアイテムを水平に表示し、2番目のフラグメントのrecyclerviewはリストを垂直に表示します。
- を
NestedScroolView
に入れました.frame1 recyclerviewはすべてのビューを適切にリサイクルしていますが、frame2 recylerviewはビューをリサイクルしていません。その理由を知らないのですか?最初にすべての項目をロードしてから画面に表示します。
いくつかのコード:
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>
FragmentA:
@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;
}
FragmentB:
@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" />
私は私は私の質問で明らかだ願っています。
で水平
RecyclerView's
を表示するために実装することができますか?私は2つの水平RVとnestedScrollViewの中の垂直RVを持っている同様の状況で立ち往生しています。水平RVのアイテムはリサイクルされていますが、垂直RVのアイテムはありません:/ – Shubhral@Shubhral私は一見、私は問題を把握する方法を共有してください。それはあなたを助けるかもしれない –