调用通知数据集后,适配器未更新



我有一个片段中的列表,我将其设置在recyclerview中。有一个按钮,然后单击时,我将回调到片段。现在,片段正在打开另一个视图,该视图是作为对话框提出的活动,它采用不同的输入,最后在提交按钮上单击,它抛弃了某种数据/模型。

现在,我将这些数据从片段的OnActivityResult方法中获取,然后将修改后的数据从用户更改并替换为我正在调用适配器上的notifydataSthanged的列表。但是数据没有改变。这是我正在这样做。

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) 
  {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == DialogChangeStore.RC_DIALOG_CHANGE_STORE) {
        if (data != null) {
            if (data.hasExtra(DialogChangeStore.KEY_USER_SELECTED_STORE)) {
                PreferredStoreServiceModel model = data.getParcelableExtra(DialogChangeStore.KEY_USER_SELECTED_STORE);
                int position = data.getIntExtra(DialogChangeStore.KEY_CLICKED_GROUP_POSITION, -1);
                if (position == -1) {
                    return;
                }

                if (model != null) {

                    ArrayList<TreeDataModel> mTempList = new ArrayList<>();
                    mTempList.addAll(treeAdapter.getUserList());
                    TreeDataModel modelToBeReplaced = mTempList.get(position);
                    TreeDataModel treeDataModel = new TreeDataModel();
                    treeDataModel.setId(model.getId());
                    treeDataModel.setName(model.getFriendlyName());
                    treeDataModel.setmPreferredStoreServiceModel(model);
                    treeDataModel.setSelected(modelToBeReplaced.isSelected());
                    treeDataModel.setExpanded(modelToBeReplaced.isExpanded());
                    treeDataModel.setHeader(true);
                    treeDataModel.setIndexNumber(modelToBeReplaced.getIndexNumber());

                    mTempList.remove(position);
                    mTempList.add(position,treeDataModel);
                    treeAdapter.getUserList().clear();
                    treeAdapter.setUserList(mTempList);
                    treeAdapter.notifyDataSetChanged();

                    selectedChangedStore = null;
                }
            }
        }
    }
}

当我进行调试时,这是不起作用的,我可以看到数据已更改。此方法 treeadapter.getuserlist((返回列表,它显示了更新的列表。但是它实际上对我不起作用。

您能告诉我可能有什么问题吗?我使用Alert Dailog进行了来自其他方面/区域//区域/的操纵类型,但是我可以看到列表正在获取更新。该代码与我上面共享的代码相对较差。

请建议我我错了,还有什么问题。我知道这 更新列表并通知达塔萨恰好是简单的事情,但不是 目前工作。...

删除使用:

 mTempList.remove(position);
 mTempList.add(position,treeDataModel);
 treeAdapter.notifyDataSetChanged();

添加使用:

 mTempList.set(position,treeDataModel);
 treeAdapter.notifyItemChanged(position);

最新更新