I want to inject my viewModel inside RecyclerView with Hilt. It can be inject but viewModel not destroy when recyclerView destroyed. what is the best way to inject viewModel inside recyclerView with hilt?
Inject viewModel with hilt
847 Views Asked by Mehdi Shojaeian At
2
There are 2 best solutions below
0
Amjad Alwareh
On
A view model shouldn't be injected inside an adapter, as I read in the comments you can you a better way than that,
Let's imagine you have an adapter with many rows, each row when the user clicks on it, it performs a network call.
First, create an interface
interface Click {
fun onClick(index: Int, item: Model)
}
inside your adapter, init an instance of it then use it in your onBindViewHolder
yourview.setOnClickListener {v-> interface.onClick()}
don't forget to init the interface whether the place you're using it (Activity/Fragment/...).
This is a better solution than using a ViewModel for every row, which may lead to a SystemLeaks.
Related Questions in ANDROID
- Creating global Class holder
- Flutter + Dart: Editing name of a tab shows up a black screen
- android-pdf-viewer Received status code 401 from server: Unauthorized
- Sdk 34 WRITE_EXTERNAL_STORAGE not working
- ussd reader in Recket Native module
- Incorrect display of LinearGradientBrush in IOS
- The Binary Version Of its metadata is 1.8.0, expected Version is 1.6.0 build error
- I can't make TextInput to auto expand properly in Android
- Creating multiple instances of a class with different initializing values in Flutter
- How to create a lottie animation
- making android analyze with coverity sast tool
- Flutter plugin development android src not opening after opening example
- I initialize my ViewModel in the Activity with several fragments as tabs, but the fragments(tabs) return null for the updated livedata
- Node.js Server + Socket.IO + Android Mobile Applicatoin XHR Polling Error...?
- How I can use the shared preferences class?
Related Questions in ANDROID-RECYCLERVIEW
- RecyclerView in Fragment Resets when ViewModel Updated without Recreating Recyclerview or calling NotiftDataSetChanged
- In Android Studio, how make an item in the recyclerview open another activity when clicked?
- Error NullPointerExeception: When trying to add Value in ArrayList & adapter.notifydatachanged
- RecyclerView with dynamic content after a complex static layout
- Recycler View is Not Showing Even After Adding Data in Array List & adapter.notifyDataSetChanged()
- Recyclerview columns same width (not fixed) but take as much space as needed
- Can't scroll when using SpannedGridLayoutManager in Recyclerview in Android kotlin
- DemoAPI (JSONs) to recyclerView using retrofit
- How to create design Android using recyclerView with dynamic item
- When I switch an Android Switch on or off, why do Switches in adjacent rows within a Recycler View also switch?
- Android recyclerview - cant able to navigate items using accessibility focus
- Scroll Dynamically added recycler view to position 0
- RecyclerView scrolls to top
- RecyclerView inside bottom sheet is not displayed
- Why isn't My RecyclerView Updating when Data is being saved to My Room Database?
Related Questions in DAGGER-2
- Cannot create an instance of ViewModel with dagger-hilt
- cannot be provided without an @Provides-annotated method. public abstract static class SingletonC implements MyApplication_GeneratedInjector error
- Build performance Dagger2 vs Hilt
- Late init / dynamic dependency initialisation in Dagger
- IntelliJ Bazel and java_plugin can't recognize generated classes
- How to inject into an AppWidgetProvider() in java using dagger 2 - Android
- @HiltAndroidApp is unresolved after adding hilt-work dependency
- Error with viewmodel facotry and viewmodel module injecting thorugh Dagger, UninitializedPropertyAccessException: lateinit property viewModelFactory
- Kotlin [Hilt] java.lang.reflect.InvocationTargetException (no error message) Error
- navigation.pop() does not work in navigation in decompose library
- Dagger2 - Field injecting a variable in ViewModel. Is it problematic?
- Dagger2 to Hilt Migration Missing Binding
- Modern solution to inject dependencies in Service with Dagger
- How to scope an object instance to Jetpack Compose navigation graph lifecycle using Hilt?
- Passing dependencies to composables not using any DI framework
Related Questions in DAGGER-HILT
- Inject a class into a composable function using hilt
- UI Integration Testing - Android Instrumentation ref now in android app
- Listener not emiting to my view after updating its MutableLiveData
- Cannot create an instance of ViewModel with dagger-hilt
- Hilt with Dagger issue
- What should I use between object class and Hilt @Singleton class. in Android
- I'm Facing this issue "The compiler option dagger.hilt.android.internal.projectType is not a recognized Hilt option. Is there a typo?"
- Is it possible for some singletons to outlive other singletons
- How to Choose Specific Concrete Implementation of Interface with Dagger Hilt
- Build performance Dagger2 vs Hilt
- hiltViewModel() not working for injecting viewModel into a compose function
- Having an issue with Dagger Hilt Proguard Rules
- Error in ANDROID NATIVE JETPACK COMPOSE app using MEDIA3 functionality
- Program crash after injecting ViewModel to the parameter of function inside MainActivity
- FusedLocationProviderClient with Hilt
Related Questions in RECYCLERLISTVIEW
- recyclerlistview navigate back to 1st page when I try to scroll
- recyclerlistview VS flash-list VS react-native-big-list
- React-native Component with specific layout overwriting the layout of application
- TouchableHighlight object inside a Flat/recycler/FlashList Losing Focus on fast key navigation with React Native TVOS
- How to display data in RecylerView within a Bottom Sheet
- This item may not have a label readable by screen readers
- Can Android RecyclerView contain Non Container Views instead of View Container
- Add search-function to RecyclerListview react Native
- What is the difference between FlashList vs RecyclerListView in React Native
- When I click on the RecyclerView Item in MainActivity I want the TextView in MainActivity to display Item's title
- RecyclerListView not scrolling when inside position absolute parent? - React Native Expo
- How to wait until RecyclerListView was measured?
- How to use useAnimatedRef with RecylerListView?
- Deletion of multiple items(Including last item) from recyclerview list It throws error IndexOutOfBound
- Is there any Method to reload recyclerview items without blinking as i am loading data from API
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
The best way to do this is to create separate adapter and viewholder classes and then you can inject your viewModel inside that viewholder class instead of the adapter. To destroy the viewModel you should manually do it by observing the parentlifecycle. when the parent lifecycle event is ON_DESTROY do something similar to this in the init block of the adapter class.
Here
onManualCleared()function callsonCleared().