【发布时间】:2017-04-07 03:18:27
【问题描述】:
我在通过新数据更新 recyclerview 项目时遇到简单的问题,我想知道哪些代码在不使用数据绑定的情况下可以正常工作,在我的代码中通过单击按钮作为 clickOnSendCommandToRobot 方法触发添加新项目,此方法必须将新项目添加到List,我的适配器可以知道要添加新数据并刷新RecyclerView,我没有收到任何错误,但列表大小始终为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);
}
}
适配器setData 方法:
public void setData(List<RobotViewModel> data) {
Log.e("data size ", data.size() + "");
list.clear();
list.addAll(data);
notifyDataSetChanged();
}
每次点击按钮并触发clickOnSendCommandToRobot 方法。 model 变量清除,我没有最新添加的项目,适配器不会通过新添加的项目刷新列表。
日志猫:
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
【问题讨论】:
-
删除 list.clear() 然后尝试。而不是它,我认为它们在代码中没有问题。
-
@KeyurThumar 帖子已更新,请查看,谢谢
-
@MikeM。是的,先生,我敢肯定,当我不使用数据绑定功能时,这段代码可以正常工作
标签: android android-recyclerview