Skip to content

Commit

Permalink
modify base fragment
Browse files Browse the repository at this point in the history
  • Loading branch information
wesamnabeel99 committed Jan 18, 2023
1 parent 0ebc469 commit 467bbb8
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 35 deletions.
31 changes: 9 additions & 22 deletions app/src/main/java/com/wesam/brainstorming/ui/base/BaseFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,40 +8,27 @@ import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.wesam.brainstorming.BR

abstract class BaseFragment <VDB: ViewDataBinding , VM : ViewModel> : Fragment() {
abstract class BaseFragment<VDB : ViewDataBinding>(private val layoutIdFragment: Int) : Fragment() {
abstract val viewModel: ViewModel

open val useActivityViewModel: Boolean = true

abstract val layoutId: Int
lateinit var viewModel: VM
abstract val viewModelClass: Class<VM>
private lateinit var _binding: VDB
val binding: VDB
get() = _binding
protected val binding: VDB get() = _binding

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) : View? {
initViewModel()
_binding = DataBindingUtil.inflate(inflater, layoutId, container, false)
): View? {

_binding = DataBindingUtil.inflate(inflater, layoutIdFragment, container, false)
_binding.apply {
setVariable(BR.viewModel,this@BaseFragment.viewModel)
lifecycleOwner = this@BaseFragment
lifecycleOwner = viewLifecycleOwner
setVariable(BR.viewModel, viewModel)
return root
}
}

private fun initViewModel() {
viewModel = if (useActivityViewModel) {
ViewModelProvider(requireActivity())[viewModelClass]
} else {
ViewModelProvider(this)[viewModelClass]
}
}

}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package com.wesam.brainstorming.ui.history

import androidx.fragment.app.viewModels
import com.wesam.brainstorming.R
import com.wesam.brainstorming.databinding.FragmentHistoryBinding
import com.wesam.brainstorming.ui.base.BaseFragment

class HistoryFragment : BaseFragment<FragmentHistoryBinding,HistoryViewModel>() {
class HistoryFragment : BaseFragment<FragmentHistoryBinding>(R.layout.fragment_history) {

override val viewModel: HistoryViewModel by viewModels()

override fun onStart() {
super.onStart()
Expand All @@ -14,9 +17,6 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding,HistoryViewModel>()
}

private fun setAdapter() {
binding.historyRecycler.adapter = HistoryRecyclerAdapter(emptyList(),viewModel)
binding.historyRecycler.adapter = HistoryRecyclerAdapter(emptyList(), viewModel)
}

override val layoutId = R.layout.fragment_history
override val viewModelClass = HistoryViewModel::class.java
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
package com.wesam.brainstorming.ui.home

import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.wesam.brainstorming.R
import com.wesam.brainstorming.databinding.FragmentNoteBinding
import com.wesam.brainstorming.ui.base.BaseFragment


class NoteFragment : BaseFragment<FragmentNoteBinding, NoteViewModel>() {
override val layoutId = R.layout.fragment_note
override val viewModelClass = NoteViewModel::class.java
class NoteFragment : BaseFragment<FragmentNoteBinding>(R.layout.fragment_note) {

override val viewModel: NoteViewModel by viewModels()

override fun onStart() {
super.onStart()
binding.imageView.setOnClickListener {
findNavController().navigate(R.id.historyFragment)
}
}


}
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ buildscript {
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.0"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"
classpath 'com.android.tools.build:gradle:7.3.0'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Thu Nov 25 02:12:00 AST 2021
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

0 comments on commit 467bbb8

Please sign in to comment.