استخدام الـ ViewModel مع الـ Paging في الـ Activity

Mohammad Laifمنذ 5 سنوات

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

في هذا الدرس سنتعلم كيفية استخدام الـ ViewModel مع الـ Paging في الـ Activity. حيث تختلف الطريقة عن الدرس السابق, فهنا سنحتاج الى Adapter خاص للـ Paging وايضاً سنحتاج الى انشاء Factory ومن خلاله سنمرر Paramters الى الـ ViewModel.

 

ماذا ستقرئ في هذا الدرس؟

  • طريقة انشاء Factory ووضع الـ Paramters بداخله والحاقة بالـ ViewModel.
  • طريقة استخدام ViewModel في الـ RecyclerView لجلب البيانات.
  • طريق مختلفة لإستخدام الـ ViewModel كاستخدامها للحفظ والحذف والتحديث.

 

الخريطة الذهنيه الكامله لهذه الدوره

 

طريقة استخدام ViewModel في الـ RecyclerView لجلب البيانات

نجهز الـ Adapter و الـ RecyclerView:

final CardListAdapter adapter = new CardListAdapter(this);
RecyclerView recyclerView = findViewById(R.id.card_list_recyclerView);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));

 

نقوم بأنشاء حقل للـ ViewModel:

private CardListViewModel mCardListViewModel;

 

نقوم بانشاء الـ Factory ووضع الـ Paramters بداخله:

CardListViewModel.Factory factory = new CardListViewModel.Factory(getApplication(), mCardParentId);
  • لاحظ تمرير عنصر mCardParentId.

 

نقوم بعمل init للـ ViewModel:

mCardListViewModel = ViewModelProviders.of(this, factory).get(CardListViewModel.class);

تعقيب:

  • لاحظ اننا استخدمنا ViewModelProviders للقيام بذلك (وذلك يعود الى ان الـ ViewModel تم انشائها باستخدام الـ Reflection).
  • ايضاً استخدمنا الـ Factory الذي انشئناه في الخطوه السابقه, وهكذا نتمكن من حقن العنصر mCardParentId في الـ ViewModel.

 

نقوم باستخدام دالتنا getCardsByParentId (هذه دالة الـ Query) حتى نأتي بالـ LiveData التي تغلف الـ PagedList ثم نلحقها بـ Observer ونستخدم دالته onChanged لإعطاء الـ Adapter بالبيانات.

mCardListViewModel.getCardsByParentId().observe(this, new Observer<PagedList<CardEntity>>() {
    @Override
    public void onChanged(@Nullable PagedList<CardEntity> cardEntities) {
        adapter.setCardEntities(cardEntities);
    }
});

 

اما طرق استخدمها للحفظ والحذف والتحديث فهي مشابهه تماماً بالدرس السابق: استخدام الـ ViewModel مع الـ LiveData في الـ Activity.

 

نهاية الدرس

فضلاً اذا اعجبك الدرس لاتنسى الضغظ على زر اعجبني ولنشر الفائدة قم بمشاركته مع من تحب. ولاتنسى تتبع الدرس حتى تطلع على التغييرات والتحديثات المتعلقه به مستقبلاً. وكذلك الامر بالنسبة للدورة من تتبع و اعجاب ومشاركة حتى يصلك جديد الدروس المتعلقه بها.

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !