Моя проблема в том, что я реализовал шаблон MVVM со счетчиком.
Но при вращении устройства и его данные снова загружаются, например, для.если я выбрал конкретное значение из счетчика, когда устройство поворачивается, это значение теряется.
Я беру данные категории книг из базы данных комнат, и это живые данные, и передаю их в адаптер массива, который реализуется с помощью счетчика.
Столкнулись с этой проблемой в течение 2 дней и не смогли ее решить. Кто-нибудь может помочь найти любой код, который может исправить ее в Java.
Перепробовал много решений, но они не работали.
Основная деятельность
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private MainActivityViewModel mainActivityViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding= DataBindingUtil.setContentView(this,R.layout.activity_main);
binding.setLifecycleOwner(this);
mainActivityViewModel= ViewModelProviders.of(this).get(MainActivityViewModel.class);
mainActivityViewModel.getCategories().observe(this, new Observer<List<Category>>() {
@Override
public void onChanged(List<Category> categories) {
ArrayAdapter<Category> listArrayAdapter=new ArrayAdapter<Category>(MainActivity.this,R.layout.spinner_item,categories);
listArrayAdapter.setDropDownViewResource(R.layout.spinner_item);
binding.spinner.setAdapter(listArrayAdapter);
Toast.makeText(MainActivity.this,"Spinner created",Toast.LENGTH_SHORT).show();
}
});
}
}
ViewModel
//for room database
public class MainActivityViewModel extends AndroidViewModel {
private EBookShopRepository bookShopRepository;
private LiveData<List<Category>> categories;
public MainActivityViewModel(@NonNull Application application) {
super(application);
bookShopRepository=new EBookShopRepository(application);
}
public LiveData<List<Category>> getCategories() {
Log.v("Data load","true");
categories=bookShopRepository.getCategories();
return categories;
}
}
Класс репозитория
public class EBookShopRepository {
private CategoryDAO categoryDAO;
private BookDAO bookDAO;
private LiveData<List<Category>> categories;
private LiveData<List<Book>> books;
private LiveData<Book> book;
//Initialize all the things here
public EBookShopRepository(Application application) {
BooksAppDatabase booksAppDatabase=BooksAppDatabase.getInstance(application);
categoryDAO=booksAppDatabase.getCategoryDAO();
bookDAO=booksAppDatabase.getBooksDAO();
}
public LiveData<List<Category>> getCategories() {
return categoryDAO.getAllCategories();
}
DAO
@Dao()
public interface CategoryDAO {
@Insert
long addCategory(Category category);
@Delete
void deleteCategory(Category category);
@Query("Select * from tbl_categories")
LiveData<List<Category>> getAllCategories();
}