【发布时间】:2020-04-23 12:20:57
【问题描述】:
我正在做一个项目,我需要实现一个菜单项,其中图标需要根据用户点击进行更改。用户可以将该项目设置为收藏,如果它已经是收藏,则将其删除。这些更改也需要在房间数据库上更新。以下是我当前的代码。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
this.myMenu = menu;
getMenuInflater().inflate(R.menu.menu_favorite, myMenu);
favItem = myMenu.findItem(R.id.action_favorite);
//set different icon when isFavorite is true.
if (isFavorite){
favItem.setIcon(R.drawable.ic_favorite_dark);
Log.d(TAG, "onCreateOptionsMenu: favoriteItemIcon is checked");
}
// menu.getItem(R.id.action_favorite);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (item.getItemId()){
case R.id.action_favorite:
updateFavoriteStatus();
break;
case android.R.id.home:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
public void updateFavoriteStatus(){
if (isFavorite){
Toast.makeText(this,
" "your favorite is set ",
Toast.LENGTH_LONG).show();
}
else{
mTeaDetailViewModel.setFavorite(false);
Toast.makeText(this,
" Favourite is Removed",
Toast.LENGTH_LONG).show();
favItem.setIcon(R.drawable.ic_favorite_border);
}
}
这是我的道场
@WorkerThread
@Query("UPDATE my_table SET favorite =:favValue WHERE name = :name")
void updateFavorite(String name, boolean favValue);
我希望每当我单击菜单项时,isFavorite 行的值都应更新为 true 或 false。 目前的工作是我只能更新一次 isFavorite 行,将其设置为 true。当我第二次单击菜单项时,我无法将其重置为 false。
【问题讨论】:
-
那么问题是什么?
-
我需要一种可以在单击菜单项后更新值的方法。目前它检查是否单击了 Item 一次。当喜爱的值已经为真时,该值不能改变
标签: android contextmenu menuitem