【问题标题】:Adapter values is not updated from another activity适配器值未从其他活动更新
【发布时间】:2017-02-17 07:45:08
【问题描述】:

我遇到了一个问题,我需要在另一个活动中更新适配器变量的值,并且回到第一个活动也应该获得更新后的值。

我现在的流程是这样的。我盯着 BarDetailsActivity 并从适配器类内部有意地传递模式,例如:

  Intent barDetailIntent = new Intent(getApplicationContext(), BarDetailActivity.class);
  barDetailIntent.putExtra("isfav", barsList.get(position));
  barDetailIntent.putParcelableArrayListExtra("barlist",barsList);
  mContext.startActivity(barDetailIntent);

然后在另一个活动中,我从意图中获取该模型并将其变量值更改为:

 gbar = in.getParcelableExtra("isfav");
 blist= in.getParcelableArrayListExtra("barlist");
 if (gbar.getmFavourite()) {    
    gbar.setmFavourite(false);
    } else {
   gbar.setmFavourite(true);
    }

现在回到我的主要活动“gbar.setmFavourite”的值不会在 MainActivity 的 onresume 上更新。

@Override
protected void onResume() {
    super.onResume();
    if(mAdapter != null){
        mAdapter.notifyDataSetChanged(); // here the adapter value is not updated.
    }
}

请帮帮我。

【问题讨论】:

  • 你什么时候用你的物品填充适配器?
  • 你确定吗,你的适配器在这里不为空吗?
  • @Avi 是的,这就是为什么我在这里检查了适配器,但 gbar.setmFavourite(false);似乎在这里不起作用。并且原始实例在那里可用。
  • 您正在传递一个可打包的对象,并且在另一个 Activity 上您正在更新它的状态。它不会改变早期活动中现有对象的状态。
  • 您需要通过 Braodcast 接收器传输更改,或者您可以通过 EventBus 传递更改的对象。

标签: java android android-adapter getter-setter


【解决方案1】:

使用Event Bus 处理问题。

  1. 注册您的第一个活动以监听事件并覆盖 onEvent 方法。
  2. 使用来自 SecondActivity 的更新数据集触发 stickyIntent。
  3. 在FirstActivity的onEvent方法中调用notifyDataSetChanged 使用更新后的数据集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多