Android update recyclerView items -


i have simple problem on update recyclerview items new data, i'm wondering code work fine without using data binding, in code adding new items trigger click on button clickonsendcommandtorobot method, method must add new item list , adapter can know add new data , refresh recyclerview, dont error, list size 1

public class activityregister extends baseactivities {     private robotmessagesadapter adapter;     private list<robotviewmodel> model;     private static final string tag = "register";      @override     public void oncreate(@nullable bundle savedinstancestate) {         super.oncreate(savedinstancestate);         binding = databindingutil.setcontentview(this, r.layout.activity_register);          activityregisterpresenter presenter = new activityregisterpresenter(this);         activityregisterviewmodel viewmodel = new activityregisterviewmodel();         binding.setviewmodel(viewmodel);         binding.setpresenter(presenter);          if (savedinstancestate == null) {             model = new arraylist<>();         } else {             model = savedinstancestate.getparcelablearraylist("model");         }         adapter = new robotmessagesadapter(this, model);         binding.registerrobot.setadapter(adapter);          ...     }     @override     public void clickonsendcommandtorobot() {         robotviewmodel temp = new robotviewmodel();         temp.setmessage(math.round(math.random()) + "");         temp.setmessagetype(sv.robotmessagetype.sent_by_robot.ordinal());         model.add(temp);          log.e(tag, model.size() + "");          adapter.setdata(model);     }      @override     protected void onsaveinstancestate(bundle outstate) {         outstate.putparcelablearraylist("model", (arraylist) model);         super.onsaveinstancestate(outstate);     } } 

adapter setdata method:

public void setdata(list<robotviewmodel> data) {     log.e("data size ", data.size() + "");     list.clear();     list.addall(data);     notifydatasetchanged(); } 

for each clicking on button , trigger clickonsendcommandtorobot method. model variable clear , don't have latest added items , adapter dont refresh list new added item. logcat:

04-08 08:29:45.342 21470-21470/com.sample.myapp e/register: 1 04-08 08:29:45.343 21470-21470/com.sample.myapp e/data size: 1 04-08 08:29:46.658 21470-21470/com.sample.myapp e/register: 1 04-08 08:29:46.658 21470-21470/com.sample.myapp e/data size: 1 04-08 08:29:47.462 21470-21470/com.sample.myapp e/register: 1 04-08 08:29:47.462 21470-21470/com.sample.myapp e/data size: 1 

because model reference recycler view adapter itself, changes made outside model object links adapter.so outside adapter class model located just, call notifydatasetchange there.so adapter.setdata(model); remove , adapter.notifydatasetchange();

 @override     public void clickonsendcommandtorobot() {         robotviewmodel temp = new robotviewmodel();         temp.setmessage(math.round(math.random()) + "");         temp.setmessagetype(sv.robotmessagetype.sent_by_robot.ordinal());         model.add(temp);          log.e(tag, model.size() + "");          adapter.notifydatasetchanged();        } 

Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -