Home oynasi class sifatida elon qilindi va fragmentdan ikki nuqta orqali voris olindi


Download 1.88 Mb.
bet1/2
Sana17.06.2023
Hajmi1.88 Mb.
#1552565
  1   2
Bog'liq
MM


Muhammad al-Xorazmiy nomidagi Toshkent axborot texnologiyalari universiteti
“Dasturiy injiniring” fakulьteti
“Аxborot texnologiyalarining dasturiy taʼminoti” kafedrasi
Dasturiy injiniringga kirish fanidan
Topshiriq-4 mavzusi: Inglizcha-O`zbekcha lug`at
Bajardi:Muhammadali Mexriddinov
Tekshirdi: Ishmuhamedov Aziz
Guruh:316-21
Reja:
1.Kirish
2.Dastur interfeysi kodi , izoxlar va interfeys screnshotlari.
3.Foydalanilgan adabiyotlar
1. Ushbu ilova Inglizcha -O`zbekcha lug`at xisoblanadi , bilim olish uchun ayniqsa ingliz tilini o`rganaman degan yosh avlod uchun juda qo`l keladi. Ilova ishlab chiqish jarayonida SQLite ma`lumotlar bazasidan foydalanildi , Operatsion tizim sifatida android , dasturlash tili sifatida kotlin tilini tanladim , Arxitektura sifatifa MVVM arxitekturasiga asoslangan holatda ishlab chiqildi.


2. Ilova dastlab so`zlar ro`yxatidan tashkil topgan oynadan iborat.


class HomeScreen : Fragment() { //Home oynasi class sifatida elon qilindi va fragmentdan ikki nuqta orqali voris olindi.


private lateinit var binding: FragmentHomeBinding //viewBinding ni elon qildik , bu bizga xml fayl ichidagi UI kompanentalarini ID si orqali topib berish uchun xizmat qiladi.
private lateinit var viewModel: HomeViewModel //viewmodel dan implement qilgan anonim class dan obekt olmadik lekin pastki qismda obekt olishni vada berib e`lon qildik maydon sifatida

private val adapter by lazy { WordAdapter() }// adapterdan ham obekt oldik , ma`lumotlarimizni ro`yxatini chiqarib beruvchi klass deb tushunsak bo`ladi, by lazy qilishimizdan sabab ayni vaqtda obekt olmasdan birinchi chaqirilgan joyida obektini olishimizni bildiradi

override fun onCreateView(
inflater: LayoutInflater
, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
//onCreatView ya`ni ko`rinishni o`zi yaralishidan oldin uning obektini yaratish uchun xizmat qiluvchi metodni qayta yozdik

binding = FragmentHomeBinding.inflate(inflater, container, false)//yuqorida elon qilingan bindingni obektini oldik

viewModel = ViewModelProvider(this)[HomeViewModel::class.java]//yuqoridagi elon qilingan viewmodelning obektini oldik

binding.listAllWords.adapter = adapter//xml dagi recyclearviewni adapteriga yuqorida obekt olib o`lashtirgan maydonimizdagi adapterni berdik yani ikkisini uladik.







adapter.setBookMarkListener {{//adapterdagi itemdagi saralagich knopkasini bosilishini sezuvchi metod


viewModel.updateWord(it)
}//itemdagi bosilishni eshtib oldik va viewmodelga berib yubordik

adapter.setRootListener {//adapterdagi item bosilishini sezuvchi metod
val bundle = Bundle()//bundle obektini ozgaruvchiga saqladik
bundle.putSerializable(
"word", it)//malumotni it korinishida berdik
preventTwoClick(requireView())
//malumotni keyingi oynaga bundle qilib berib yubordik , va ikki marta bosilishni oldini oldik
findNavController().navigate(R.id.action_homeFragment_to_wordMeaningFragment, bundle)//jeetpack navigation orqali bir oynadan boshqa oynaga o`tdik
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {//ko`rinishni obektini yaratdik ya`ni viewni yaratdik , bu onViewCreated metodini qayta yosish orqali amalga oshiriladi , endi bu iynada barcha kodlarimizni yozishda davom ettira olamiz.


binding.imgMenu.setOnClickListener {//xml dagi knopkani bosilishini eshtish
binding.drawerLayout.openDrawer(GravityCompat.START)//drawerlayoutni start qildik
}
binding.navigationView.setNavigationItemSelectedListener {//drawerni ishga tushurish jarayoni
when (it.itemId) {//Bu kotlinda when javada switch case vazifasini bajaradi
R.id.
about ->//about knopkasini bosilishi
{ findNavController().navigate(HomeScreenDirections.actionHomeFragmentToAboutScreen())

Download 1.88 Mb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling