Я сделал простой проект для изучения Dagger. Приложение извлекает список свойств (аренда жилья) из Интернета и отображает их в списке RecyclerView
. Я внедрил все зависимости с Dagger 2, кроме адаптера для списка. Адаптер довольно стандартный, он берет список свойств и заполняет представления:
public class PropertyListAdapter extends RecyclerView.Adapter<PropertyListAdapter.ViewHolder> {
private List<Property> mPropertyList;
@Inject
public PropertyListAdapter(List<Property> propertyList) {
mPropertyList = propertyList;
}
// onCreateViewHolder()
// onBindViewHolder()
// getItemCount()
// class ViewHolder{}
}
Приложение состоит из одного действия, которое содержит фрагмент, содержащий список recyclerview
. Во фрагменте onActivityCreated()
у меня есть:
mPropertyViewModel.getPropertyList().observe(this, properties -> setPropertyAdapter(properties));
и setPropertyAdapter()
:
private void setPropertyAdapter(List<Property> properties) {
rvPropertyList.setAdapter(new PropertyListAdapter(properties));
}
Итак, чтобы ввести PropertyListAdapter
Я создал модуль:
@Module
public class AdapterModule {
@Provides
@Singleton
PropertyListAdapter providePropertyListAdapter(List<Property> propertyList) {
return new PropertyListAdapter(propertyList);
}
}
но потом я понял, что мне нужно вводить List<Property>
, и я не знаю, как этого добиться, и я застрял. Как ввести адаптер в этом примере?
P.S. Я использую MVVM с компонентами архитектуры.
Logcat: error: [dagger.android.AndroidInjector.inject(T)] java.util.List<com.aandritchi.android.propertyrentals.data.domain.Property> cannot be provided without an @Provides-annotated method.
java.util.List<com.aandritchi.android.propertyrentals.data.domain.Property> is injected at
com.aandritchi.android.propertyrentals.di.module.data.AdapterModule.providePropertyListAdapter(propertyList)
com.aandritchi.android.propertyrentals.ui.search_result.PropertyListAdapter is injected at
com.aandritchi.android.propertyrentals.ui.search_result.PropertySearchResultFragment.mPropertyListAdapter
com.aandritchi.android.propertyrentals.ui.search_result.PropertySearchResultFragment is injected at
com.aandritchi.android.propertyrentals.ui.home.HomeActivity.mPropertySearchResultFragment
com.aandritchi.android.propertyrentals.ui.home.HomeActivity is injected at
dagger.android.AndroidInjector.inject(arg0)