Я столкнулся с подобной ситуацией, и вот модель, которой я следовал.
Прежде всего, Фрагмент макета.
Файл фрагмента фрагмента не изменится для всех 3 фрагментов (в основном это похоже на фрагмент списка), поэтому я создал файл шаблона для фрагмента списка.
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>
Теперь фрагмент кода:
В моем случае все 3 фрагмента делает почти те же вещи (получить вид ресайклера, получить адаптер, украшение вида ресайклера и еще несколько операций и т.д.).
Создал AbstrctFragment, который расширяет фрагмент и отменяет onCreate onAttach onDestroy и т. Д. Поскольку только тип использования recycliewiew данных и адаптеры для пересылки данных в recycelrview будут меняться для каждого фрагмента, создайте абстрактную функцию для получения атрибутов и templatize данных. Каждый из трех фрагментов будет получен из этого 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 и любые общие членские функции и переменные-члены, которые поступают для каждого фрагмента.
RecyclerView файлы макета. Поскольку все они различны в макете, очевидно, они должны быть разными.
RecyclerViewAdapters: Опять же здесь общий код будет деклараций членов, CreateViewHolder (здесь только макет изменения названия отдыха весь код такой же) и любой другой функции, все эти адаптеры будут совместно. (что-то вроде фильтрующих элементов списка).
подобно тому, как мы это делали для фрагментов, вы можете сохранить это в AbstractRecyclerViewAdapter и сделать bindViewholder и т.д. как абстрактные функции и имеют 3 различных recyclerAdapters, которые могли бы извлечь из этого AbstractRecyclerViewAdapter ..
Вам нужно предоставить более подробную информацию о вашем приложении - в противном случае трудно дать рекомендацию – ligi