2016-03-28 3 views
0

einstellt Ich habe Liste der Hochschulen. Wenn ich auf eine der Hochschule klicke, gehe zur Detailseite, die eine menu bar mit favourite_icon hat. Wenn ich auf favourite_icon klicke, wird Universität als Liebling in Server gespeichert und das favourite_icon geändert als favourite_icon1. Wenn wir das College-Detail nach einigen Zeiten wieder überprüfen diese Menüleiste favourite_icon sollte favourite_icon1 sein, wenn diese Hochschule bereits favoiurited ist. Ich habe die API, um zu überprüfen, ob die Hochschule oder wenn nicht, wenn die Antwort wie "status=fav" ist, sonst "status=not_fav".Wie man ein Standardsymbol in der Menüleiste entsprechend der Serverantwort in android

Hier habe ich den Code für Ihre Referenz hinzugefügt

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> 

Aktivitätscode

@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() metho 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); 
    } 

Antwort

0

Dies ist, wie ich erreicht es, hoffen, dass diese Hilfe. Sie können auch supportInvalidateOptionsMenu() oder InvalidateOptionsMenu() verwenden, um Änderungen zu aktualisieren.

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     menu.clear(); //If you want to clear the menu 
     inflater.inflate(R.menu.activity_menu, menu); 
     updateMenuIcon(menu); 
    } 

    private void updateMenuIcon(Menu menu) { 
     if (menu == null) return; 
     if (condition) {//Check for some condition 
      changeMenuIcon(menu, R.drawable.fav); 
     } else { 
      changeMenuIcon(menu, R.drawable.not_fav); 
     } 
    } 

    private void changeMenuIcon(Menu menu, int resource) { 
     Drawable newIcon = getResources().getDrawable(resource); 
     menu.findItem(R.id.menu_fav).setIcon(newIcon); 
    } 
Verwandte Themen