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");
如何从适配器更新 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");