У меня есть сомнение. Если у меня есть метод, который выполняет асинхронный вызов API и преобразует его результаты в объект liveata, а в другом месте я обновляю свое окно повторного просмотра при изменении данных, тогда каждый раз, когда вызов этого метода будет обновите программу повторного просмотра или, например: если URL-адрес останется прежним, то он не будет обновлять обзор повторного просмотра; помогите, пожалуйста. Вот код для наблюдения данных в методе Mainactivity onCreate.
JsonViewModel model = new ViewModelProvider(this).get(JsonViewModel.class);
model.getData("top_rated").observe(this, data -> {
mRecyclerView.setAdapter(new MovieRecyclerViewAdapter(this,data));
});
Вот класс JsonViewModel
public class JsonViewModel extends AndroidViewModel {
private JsonLivedata data;
public JsonViewModel(@NonNull Application application) {
super(application);
data=new JsonLivedata();
}
public LiveData<List<Movie>> getData(String path) {
data.loadData(path);
return data;
}
}
Вот класс JsonLivedata
public class JsonLivedata extends LiveData<List<Movie>> {
private static final String TAG = "JsonLivedata";
public JsonLivedata() {
}
public void loadData(String path){
Log.d(TAG, "loadData: Called");
new AsyncTask<String,Void,List<Movie>>(){
@Override
protected List<Movie> doInBackground(String... path) {
List<Movie> allTopMovies= JsonResponseFetcher.makeAsyncQueryForMovies(path[0]);
return allTopMovies;
}
@Override
protected void onPostExecute(List<Movie> movies) {
setValue(movies);
}
}.execute(path);
}
}
И вот метод, который вызывает метод livedata loaddata
changeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
model.getData("popular");
}
});
Или я делаю что-то неправильно. Может кто-нибудь предложить