来自Adapter的Android Update工具栏/操作栏标题

时间:2017-03-14 14:36:34

标签: android android-actionbar adapter

如何从Adapter更新ActionBar标题?

我试过了:

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

传递适配器中的活动上下文。

Myadapter adapter = new Myadapter (this);

在Myadapter课程中:

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

现在使用context设置标题:

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

答案 1 :(得分:0)

也许像回调结构?有了这个,您不需要传递整个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);
    }     
}

使用它,您只需调用Adapter类

即可
callback.changeTitle("New Title");
相关问题