View Model keeps creating instance of Live Data

前端 未结 5 1441
隐瞒了意图╮
隐瞒了意图╮ 2021-01-18 16:47

I created the instance of View Model in onCreate method of an activity.

    ticketViewModel = ViewModelProviders.of(this).get(TicketViewModel.cl         


        
5条回答
  •  不思量自难忘°
    2021-01-18 17:29

    I had similar problem. You could try to use SingleLiveEvent

    Or, in my, more complicated case, i had to use custom observer. It would looks like this:

    public class CustomObserver implements Observer {
        private MyViewModel mViewModel;
    
        public CustomObserver (){}
    
        public void setViewModel(MyViewModel model) {
            mViewModel = model;
        }
    
        @Override
        public void onChanged(@Nullable YourType object) {
            mViewModel.AddTicket(id).removeObserver(this); // removing previous 
            mmViewModel.refreshTickets(); // refreshing Data/UI
            // ... do the job here
            // in your case it`s: dismissLoadingAnimation();
        } 
    }
    

    And using it like:

    public void addTicket(View view){
    
         ticketViewModel.AddTicket(id).observe(this, myCustomObserver);
    }
    

提交回复
热议问题