如何从Adapter更新ActionBar标题?
我试过了:
((MainActivity) getActivity()).getSupportActionBar().setTitle(getString(R.string.home_item));
但这种方式只适用于片段。所以我这样做:
((MainActivity) view.getContext()).getSupportActionBar().setTitle(getString(R.string.home_item));
并获得强制转换异常。我不知道怎么做。
那么可以从Adapter更新ActionBar Title吗?感谢
答案 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");