Android 从适配器更新 toolbar/actionbar 标题

Android Update toolbar/actionbar title from Adapter

如何从适配器更新 ActionBar 标题?

我试过这个:

((MainActivity) getActivity()).getSupportActionBar().setTitle(getString(R.string.home_item));

但这种方式只适用于片段。所以我这样做:

((MainActivity) view.getContext()).getSupportActionBar().setTitle(getString(R.string.home_item));

并获得转换异常。我不知道怎么做。

那么可以从 Adapter 更新 ActionBar Title 吗?谢谢

在您的适配器中传递 activity 上下文。

Myadapter adapter = new Myadapter (this);

在我的适配器中 class:

Context context;
public Myadapter(Context c){
      this.context = c;
}

现在使用context设置标题如下:

((MainActivity) context.getSupportActionBar().setTitle(getString(R.string.home_item));

也许类似于回调结构?有了这个,您不需要传递整个 Context 的实例,而只需传递回调。

class Adapter{
  private AdapterCallback callback;
  public Adapter(AdapterCallback callback){
    this.callback = callback;
  }

  public interface AdapterCallback{
   void changeTitle(String s);
  }
}

而您的 Activity 实现 AdapterCallback 并将其传递给适配器

    class YourActivity extends Activity implements AdapterCallback{

    Adapter adapter = new Adapter(this);

    public void changeTitle(String s){
      getSupportActionBar().setTitle(s);
    }     
}

这样你就可以简单地调用你的适配器 class

callback.changeTitle("New Title");