my Activity code
public class SearchActivity2 extends AppCompatActivity {
androidx.appcompat.widget.SearchView ser;
RecyclerView recyclerView2;
NewsViewModel newsviewmodelsearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search2);
ser=findViewById(R.id.search_view2);
recyclerView2=findViewById(R.id.search_recycler2);
/* newsviewmodelsearch = new ViewModelProvider(this).get(NewsViewModel.class);
newsviewmodelsearch.init(this.getApplication());*/
newsviewmodelsearch=new ViewModelProvider(this).get(NewsViewModel.class);
/* newsviewmodelsearch.searchAnewlist.observe(this, new Observer<ArrayList<NewsModel>>() {
@Override
public void onChanged(ArrayList<NewsModel> newsModels) {
Log.v("tagsearch",""+newsModels);
}
});
final androidx.appcompat.widget.SearchView searchView=findViewById(R.id.search_view);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
newsviewmodelsearch.searrchNews(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});*/
}
ViewModel
public class NewsViewModel extends ViewModel {
public Repository repository;
private String mQuery;
public Application application;
@ViewModelInject
public NewsViewModel(Repository repository) {
this.repository = repository;
}
public void init(Application application){
repository = new Repository(application);
//mAllWords = repository.getAllWords();
}
public MutableLiveData<ArrayList<NewsModel>> newsList = new MutableLiveData<>();
public MutableLiveData<ArrayList<NewsModel>> EuropenewsList = new MutableLiveData<>();
public LiveData<List<NewsModel>> ReadLaterList = null;
public MutableLiveData<ArrayList<NewsModel>> searchAnewlist = new MutableLiveData<>();
public LiveData<List<NewsModel>> getReadLaterList() {
return ReadLaterList;
}
public void getNews() {
repository.getNews()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> newsList.setValue(result.getArticles()),
error -> Log.e("ViewModel", "" + error.getMessage()));
}
public void getEuropeNews() {
repository.getEuropeNews()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> EuropenewsList.setValue(result.getArticles()),
error -> Log.e("ViewModel", "" + error.getMessage()));
}
public void searrchNews(String query) {
repository.searchNews(query)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> searchAnewlist.setValue(result.getArticles()),
error -> Log.e("ViewModel", "" + error.getMessage()));
}
public void InsertAnew(NewsModel newsModel) {
repository.InsertAnew(newsModel);
}
public void DaleteAnew(String newtitle) {
repository.DeleteAnew(newtitle);
}
public void getReadlaterNews() {
ReadLaterList = repository.getRlatter();
}
}
Error
Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.SearchActivity2}: java.lang.RuntimeException: Cannot create an instance of class com.example.myapplication.viewmodel.NewsViewModel
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)