私は大学のリストを持っています。私が大学の一つをクリックすると、menu bar
とfavourite_icon
を持つ詳細ページに行きます。favourite_icon
をクリックすると、その大学はサーバーにお気に入りとして保存され、favourite_icon
はfavourite_icon1
に変更されます。そのメニューバーfavourite_icon
はfavourite_icon1
である必要があります。その大学はすでにfavoiurited.Iは、回答が好きな場合は"status=fav"
の場合は"status=not_fav"
のように、大学が好意であるかどうかを確認するAPIを持っています。ここでandroidのサーバーレスポンスに合わせてメニューバーのデフォルトアイコンを設定する方法
は、私はあなたの参照
menu_clg.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:appmunu="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".UserDashBoardFragment">
<item
android:id="@+id/action_notify"
android:icon="@drawable/mail_icon"
appmunu:showAsAction="always"
android:title="Notification" />
<item
android:id="@+id/action_favourite"
android:icon="@drawable/icon_selector"
appmunu:showAsAction="always"
android:title="Favourite" />
</menu>
icon_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true"
android:drawable="@drawable/vijay"
/>
<item
android:state_selected="false"
android:drawable="@drawable/favourite_icon"
/>
</selector>
アクティビティコード
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_clg, menu);
mMenu = menu;
return true;
}
// delete the selected event from event list added here
boolean canAddItem = false;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_notify:
navigatetoNotification();
return true;
case R.id.action_favourite:
if(item.getItemId() == R.id.action_favourite){
invalidateOptionsMenu();
favouriteClg();
}
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(canAddItem){
menu.getItem(1).setIcon(R.drawable.vijay);
canAddItem = false;
favouriteClg();
}
else{
menu.getItem(1).setIcon(R.drawable.favourite_icon);
canAddItem = true;
favouriteClg();
}
return super.onPrepareOptionsMenu(menu);
}
favourtieclg()メトのコードを追加しましたd
public void favouriteClg() {
final CollegeMO collegeMO = (CollegeMO) getIntent().getSerializableExtra("CollegeMO");
DatabaseHelper db = new DatabaseHelper(context);
userMO = db.getUserData(1);
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... arg0) {
return favouriteDelegates.addFavourite(userMO, collegeMO, context);
}
@Override
protected void onPostExecute(String userData) {
if (!userData.equals("0") && null != userData) {
UserMO userMO = gson.fromJson(userData, new TypeToken<UserMO>() {
}.getType());
if (userMO.getStatus().equals("success")) {
Toast.makeText(getApplicationContext(), userMO.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
}.execute(null, null, null);
}