Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 2019-02-18 16:17:27.584 10742-10742/avocado.droid.room E/AndroidRuntime: FATAL EXCEPTION: main
- Process: avocado.droid.room, PID: 10742
- java.lang.RuntimeException: Unable to start activity ComponentInfo{avocado.droid.room/avocado.droid.room.ui.MainActivity}: java.lang.RuntimeException: Cannot create an instance of class avocado.droid.room.viewmodel.ProductListViewModel
- at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3303)
- at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411)
- at android.app.ActivityThread.-wrap12(Unknown Source:0)
- at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994)
- at android.os.Handler.dispatchMessage(Handler.java:108)
- at android.os.Looper.loop(Looper.java:166)
- at android.app.ActivityThread.main(ActivityThread.java:7529)
- at java.lang.reflect.Method.invoke(Native Method)
- at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
- at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
- Caused by: java.lang.RuntimeException: Cannot create an instance of class avocado.droid.room.viewmodel.ProductListViewModel
- at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:252)
- at androidx.lifecycle.ViewModelProvider$FactoryWrapper.create(ViewModelProvider.java:268)
- at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:179)
- at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:147)
- at avocado.droid.room.ui.ProductListFragment.onActivityCreated(ProductListFragment.java:49)
- public class ProductListViewModel extends AndroidViewModel {
- private final DataRepository mRepository;
- private final MediatorLiveData<List<ProductEntity>> mObservableProducts;
- public ProductListViewModel(Application application) {
- super(application);
- mObservableProducts = new MediatorLiveData<>();
- mObservableProducts.setValue(null);
- mRepository = ((BasicApp) application).getRepository();
- LiveData<List<ProductEntity>> products = mRepository.getProducts();
- mObservableProducts.addSource(products, mObservableProducts::setValue);
- }
- /**
- * Expose the LiveData Products query so the UI can observe it.
- */
- public LiveData<List<ProductEntity>> getProducts() {
- return mObservableProducts;
- }
- public LiveData<List<ProductEntity>> searchProducts(String query) {
- return mRepository.searchProducts(query);
- }
- }
- public class ProductListFragment extends Fragment {
- public static final String TAG = "ProductListFragment";
- private ProductAdapter mProductAdapter;
- private ListFragmentBinding mBinding;
- @Nullable
- @Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
- mBinding = DataBindingUtil.inflate(inflater, R.layout.list_fragment, container, false);
- mProductAdapter = new ProductAdapter(mProductClickCallback);
- mBinding.productsList.setAdapter(mProductAdapter);
- return mBinding.getRoot();
- }
- @Override
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- final ProductListViewModel viewModel =
- ViewModelProviders.of(this).get(ProductListViewModel.class);
- mBinding.productsSearchBtn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Editable query = mBinding.productsSearchBox.getText();
- if (query == null || query.toString().isEmpty()) {
- subscribeUi(viewModel.getProducts());
- } else {
- subscribeUi(viewModel.searchProducts("*" + query + "*"));
- }
- }
- });
- subscribeUi(viewModel.getProducts());
- }
Add Comment
Please, Sign In to add comment