Natknąłem się na podobną sytuację i oto model, który podążałem.
Po pierwsze, Plik fragmentu układu.
Plik układu fragmentu nie zmieni się dla wszystkich 3 fragmentów (w zasadzie jest podobny do fragmentu listy), więc utworzyłem plik szablonu dla fragmentu listy.
list_fragment_template.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
kod Teraz fragment:
W moim przypadku wszystkie 3 fragmenty zrobić prawie same rzeczy (dostać widok recykler, dostać kartę, recykler widok dekoracji i jeszcze kilka operacji etc).
Utworzono AbstrctFragment, który rozszerza fragment i nadpisuje onCreate onAttach onDestroy itp. Ponieważ tylko typ recyklingu danych zużywa i adaptery do przekazywania danych do recycelrview zmieni się dla każdego z fragmentów, utwórz abstrakcyjną funkcję, aby pobrać Adaptor i dokonać templatalizacji danych. Każdy z trzech fragmentów będzie pochodził z tego AbstractFragment.
public abstract class AbstractFragment<E> extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.template_list_fragment, container, false);
mRecyclerView = (RecyclerView) view.findViewById(R.id.list);
// get adapter to show item list
// and fetch data.
mRecyclerAdapter = getAdapter();
mRecyclerView.setAdapter(mRecyclerAdapter);
// show it as vertical list
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
// add seperator between list items.
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
return view;
}
... onAttach onDetach i cokolwiek wspólnego memberfunctions i zmiennych członkowskich, które przychodzi dla każdego fragmentu.
Teraz Pliki układu RecyclerView. Ponieważ wszystkie z nich różnią się układem, oczywiście muszą być inne.
RecyclerViewAdapters: Znów w tym miejscu wspólnym kodem byłyby deklaracje członków, CreateViewHolder (tutaj tylko zmiany nazwy layoutu spoczywają cały kod jest taki sam) i każda inna funkcja, którą wszystkie te adaptery mogłyby udostępniać. (coś w rodzaju filtrowania elementów listy).
podobny do tego, jak to zrobiliśmy dla fragmentów, można mieć to na AbstractRecyclerViewAdapter i uczynić bindViewholder etc jako abstrakcyjnych funkcji i posiada 3 różne recyclerAdapters, które wynikają z tego AbstractRecyclerViewAdapter ..
Musisz podać więcej szczegółów na temat swojej aplikacji - w przeciwnym razie trudno jest podać rekomendację – ligi