【问题标题】:fragment from fragment activity calls startactivityforresult but notifydatasetchanged does not work来自片段活动的片段调用 startactivityforresult 但 notifydatasetchanged 不起作用
【发布时间】:2016-11-17 07:24:46
【问题描述】:

我有一个片段活动'feedlistActivity',我有一个片段'myPostFragment',这个片段包含一个listView,我从那个片段调用startActivityForResult来启动一个新的活动'MyActivity'。

MyActivity.class

Intent returnIntent = new Intent();
                    returnIntent.putExtra("POST_OBJECT", postData);
                    setResult(Activity.RESULT_OK, returnIntent);
                    finish();

MyPostFragment.class

Intent editIntent = new Intent(context, MyActivity.class);
        editIntent.putExtra("EDIT_POST", postDetailsData);
        startActivity(editIntent);
        break;    

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
        if (requestCode == ADD_EDIT_POST ) {

                if (data != null && data.hasExtra("POST_OBJECT")) {
                    PostDetailsData postData = (PostDetailsData) data
                            .getSerializableExtra("POST_OBJECT");

                    if (postData != null) {
                        myPostFeedList.add(postData);
                        postAdapter.notifyDataSetChanged();
                        setAdapter();
                    }
                }
            }
        }

private void setAdapter() {
    // if (postAdapter == null) {
    postAdapter = new PostListAdapter(context, myPostFeedList);
    postAdapter.setSwipeOptionClickedListner(this);
    myPostfeedListView.setAdapter(postAdapter);

    postAdapter.notifyDataSetChanged();
    // } else {
    // postAdapter.notifyDataSetChanged();
    // }

}

FeedlistActivity.class

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
}

我的问题是,当我调用“notifyDatasetChanged”并且列表没有立即刷新时,上面的代码对我不起作用

【问题讨论】:

  • 您的适配器可能以错误的方式实现。它可能将数据存储在错误的变量中。
  • 你能发布 setAdapter() 吗?
  • @VladMatvienko Raghavendra,我已经添加了我的 setadapter 方法,我也用这个方法来初始化加载数据。当时还可以
  • 所有东西看起来都不错。请尝试逐行调试,看看您使用的值是否正确
  • 检查这个,你可能会找到答案here

标签: android notifydatasetchanged startactivityforresult


【解决方案1】:

你需要一步步调试,看看函数"postAdapter.notifyDataSetChanged()"是否被执行。

【讨论】:

  • 如果resultCode不匹配,下面的代码肯定不能执行。
  • 现在我已经对代码进行了一些更改,现在一切正常,postAdapter.notifyDataSetChanged() 也被调用,但只有 listview 没有被刷新
  • 您可以尝试检查 PostListAdapter 的类是否写入正确。
  • 你好,经过大量搜索后,我发现列表视图得到通知,但数据被添加到 arraylist 列表视图的底部。什么是解决方案?你能告诉我吗?
  • 你解决这个问题容易吗?可能是你写错了adapter或者layout
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-11
相关资源
最近更新 更多