我想在点击适配器类中的列表视图按钮时更新操作栏中的购物车。就像杂货店购物应用程序一样。
答案 0 :(得分:1)
最简单的方法是拨打invalidateOptionsMenu()
上的Activity
。因此,如果您可以访问Activity
中的adapter
,只需这样做,一切都应该正常。
编辑:
如果您无权访问Activity
中的adapter
,请创建一个。
例如,Listener
传递给adapter
构造函数。
ExampleAdapter
(只是必要部分,可能没有所需的方法,请自行完成):
public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> {
private Listener listener;
public ExampleAdapter(Listener listener) {
this.listener = listener;
}
// other needed methods
@Override
public void onBindViewHolder(ExampleAdapter.ExampleViewHolder holder, int position) {
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null) {
listener.onOptionsMenuChangeRequested();
}
}
});
//some other stuff
}
public static class ExampleViewHolder extends RecyclerView.ViewHolder {
public Button button;
public ExampleViewHolder(View itemView) {
super(itemView);
// initialize the button
}
}
public interface Listener {
void onOptionsMenuChangeRequested();
}
}
如果您在adapter
中创建Fragment
:
ExampleAdapter adapter = new ExampleAdapter(new ExampleAdapter.Listener() {
@Override
public void onOptionsMenuChangeRequested() {
if (getActivity() != null){
getActivity().invalidateOptionsMenu();
}
}
});
或者,如果您创建adapter in a
活动:
ExampleAdapter adapter = new ExampleAdapter(new ExampleAdapter.Listener() {
@Override
public void onOptionsMenuChangeRequested() {
invalidateOptionsMenu();
}
});