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())
Do'stlaringiz bilan baham: |