如何通过单击回收站视图的项目来启用菜单项?
How to enable menu item with a click of items of recycler view?
我在 InterestsActivity 中有一个带复选框的回收视图,我想在我至少获得 4 个后启用工具栏上的 NEXT 按钮 已选中复选框。
下一步按钮在 onCreateOptionsMenu(菜单菜单)
中被禁用
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_interests_button, menu);
nextBtn = menu.findItem(R.id.action_button);
nextBtn.setEnabled(false);
return true;
}
我已经覆盖了 onPrepareOptionsMenu(Menu menu) 并尝试通过调用 invalidateOptionsMenu() 在 onClick 中启用菜单项我的 ViewHolder 项目..
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuItem item = menu.findItem(R.id.action_button);
if(interestMap.size()>=4)
item.setEnabled(true);
return true;
}
我在 ViewHolder
中的绑定方法
public void bind(final Topic subject) {
interestMap=new HashMap<>();
mSubjectCheckbox.setText(subject.getSubjectName());
mSubjectCheckbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
interestMap.put(subject.getSubjectName(),true);
if(interestMap.size()>=4)
InterestsActivity.this.invalidateOptionsMenu();
}
});
}
但是按钮没有被启用,我做对了吗?还是遗漏了什么?
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_button) {
mFirebaseUtil.mFirestore.collection("users").document(FirebaseUtil.getCurrentUserId()).collection("interests").add(interestMap).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Intent setupIntent = new Intent(InterestsActivity.this, SetupActivity.class);
startActivity(setupIntent);
finish();
}
});
return true;
}
return super.onOptionsItemSelected(item);
}
请帮我解决这个问题。提前致谢。
这段代码好像没什么问题。
您应该检查条件 interestMap.size()>=4
是否获得正确的值,即您的 interestMap
是否正确填充。
我在 InterestsActivity 中有一个带复选框的回收视图,我想在我至少获得 4 个后启用工具栏上的 NEXT 按钮 已选中复选框。
下一步按钮在 onCreateOptionsMenu(菜单菜单)
中被禁用 @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_interests_button, menu);
nextBtn = menu.findItem(R.id.action_button);
nextBtn.setEnabled(false);
return true;
}
我已经覆盖了 onPrepareOptionsMenu(Menu menu) 并尝试通过调用 invalidateOptionsMenu() 在 onClick 中启用菜单项我的 ViewHolder 项目..
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuItem item = menu.findItem(R.id.action_button);
if(interestMap.size()>=4)
item.setEnabled(true);
return true;
}
我在 ViewHolder
中的绑定方法public void bind(final Topic subject) {
interestMap=new HashMap<>();
mSubjectCheckbox.setText(subject.getSubjectName());
mSubjectCheckbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
interestMap.put(subject.getSubjectName(),true);
if(interestMap.size()>=4)
InterestsActivity.this.invalidateOptionsMenu();
}
});
}
但是按钮没有被启用,我做对了吗?还是遗漏了什么?
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_button) {
mFirebaseUtil.mFirestore.collection("users").document(FirebaseUtil.getCurrentUserId()).collection("interests").add(interestMap).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Intent setupIntent = new Intent(InterestsActivity.this, SetupActivity.class);
startActivity(setupIntent);
finish();
}
});
return true;
}
return super.onOptionsItemSelected(item);
}
请帮我解决这个问题。提前致谢。
这段代码好像没什么问题。
您应该检查条件 interestMap.size()>=4
是否获得正确的值,即您的 interestMap
是否正确填充。