Benzer bir durumla karşılaştım ve takip ettiğim model. Her şeyden
Öncelikle Fragment düzeni dosyası.
parçası düzeni dosyası tüm 3 parçaları için değiştirmeye gitmiyor (temelde fragman listelemek için benzerdir), bu yüzden liste fragmanı için bir şablon dosyasını oluşturdu.
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>
Şimdi parçası kodu: Benim durumumda
3 fragmanları hemen hemen aynı şeyler (vb adaptörü, geri dönüşüm görünümü dekorasyon ve biraz daha operasyonlarını olsun, geri dönüşüm görünüm elde) yapmak.
Bir parçayı genişleten ve üzerinde değişiklik yapan bir AbstrctFragment öğesi oluşturuldu.Etroch onDestroy vb. Için yalnızca bir veri üretildiğinden ve veriyi geri dönüştürmek için veriyi geri dönüştürmeye gönderen bağdaştırıcıların her biri için değişeceğinden, verileri almak ve ayarlamak için soyut bir işlev oluşturur. Üç fragmanın her biri bu AbstractFragment'ten türetilecektir.
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 ve ortak olursa olsun memberfunctions ve her fragman için geliyor üye değişkenleri.
Şimdi
RecyclerView düzeni dosyaları. Hepsi düzen içinde farklı olduğundan, açıkça farklı olmalılar.
RecyclerViewAdapters: Yine burada ortak kod üyesi bildirimleri, CreateViewHolder (burada yalnızca düzen adı değişiklikleri tüm kod aynıdır dinlenme) ve bu adaptörlerin her paylaşır başka işlevi olacaktır. (liste öğeleri filtrelemek gibi bir şey). Eğer AbstractRecyclerViewAdapter bulunsun, yapmak vb bindViewholder soyut işlevleri olarak ve bu AbstractRecyclerViewAdapter elde edilebilecek 3 farklı recyclerAdapters olabilir biz parçaları için nasıl yaptığını benzer
, ..
listelemek için şebekesinden düğmeye geçmek ve ne zaman bu yöntemleri Çağrı - aksi takdirde bu bir RecyclerView.Adapter alt sınıfı olmayan bir recomendation – ligi