title: How to refresh list of the navigation drawer as soon as its open/closed in Android
body: <p>I have created navigation drawer and displaying items in list. My list is static but i am displaying points. So when users select the items in the list and do some activity he get the points. So i want to update the points as soon as he gets. How can i do this./</p>
  
  <p>Below is my code:</p>
  
  <p><strong>Activity Class:</strong></p>
  
  <pre><code>@Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.home_page);
      // Initializing
      dataList = new ArrayList&lt;DrawerItem&gt;();
      mTitle = mDrawerTitle = getTitle();
      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
      mDrawerList = (ListView) findViewById(R.id.left_drawer);
  
      mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
              GravityCompat.START);
  
      sharedPreferences = getSharedPreferences(Constant.LOGIN_CHECK,
              Constant.PRIVATE_MODE);
      editSharedPreferences = sharedPreferences.edit();
      if (sharedPreferences.getBoolean(Constant.IS_ALREADY_LOGIN,
              false)) {
          loginInBackground();
      }
      String p1 = sharedPreferences.getString(Constant.USERS_POINTS,
              "");
      String p2 = sharedPreferences.getString(
              Constant.LEVEL_ONE_POINTS, "");
      String p3 = sharedPreferences.getString(
              Constant.LEVEL_TWO_POINTS, "");
  
      String pointText = " POINTS";
      dataList.add(new DrawerItem("OVERVIEW", R.drawable.ic_action_eye,
              Color.DKGRAY, Color.TRANSPARENT));
      dataList.add(new DrawerItem("EARN POINTS", R.drawable.ic_action_dollor,
              Color.GREEN, Color.TRANSPARENT));
      dataList.add(new DrawerItem("MY POINTS ", p1 + pointText, Color.BLACK,
              Color.BLACK));
      dataList.add(new DrawerItem("REFERRALS POINTS LV1 ", p2 + pointText,
              Color.BLACK, Color.BLACK));
      dataList.add(new DrawerItem("REFERRALS POINTS LV2 ", p3 + pointText,
              Color.BLACK, Color.BLACK));
      dataList.add(new DrawerItem("WITHDRAW REWARDS",
              R.drawable.ic_action_home, Color.DKGRAY, Color.TRANSPARENT));
      dataList.add(new DrawerItem("MY PROFILE", R.drawable.ic_action_settings,
              Color.DKGRAY, Color.TRANSPARENT));
      dataList.add(new DrawerItem("HELP", R.drawable.help_d, Color.DKGRAY,
              Color.TRANSPARENT));
  
      adapter = new CustomDrawerAdapter(this, R.layout.custom_drawer_item,
              dataList);
  
      mDrawerList.setAdapter(adapter);
  
      mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
  
      getActionBar().setDisplayHomeAsUpEnabled(true);
      getActionBar().setHomeButtonEnabled(true);
  
      mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
              R.drawable.ic_drawer, R.string.drawer_open,
              R.string.drawer_close) {
          public void onDrawerClosed(View view) {
              getActionBar().setTitle(mTitle);
              invalidateOptionsMenu(); // creates call to
                                          // onPrepareOptionsMenu()
          }
  
          public void onDrawerOpened(View drawerView) {
              getActionBar().setTitle(mDrawerTitle);
              invalidateOptionsMenu(); // creates call to
                                          // onPrepareOptionsMenu()
          }
      };
  
      mDrawerLayout.setDrawerListener(mDrawerToggle);
  
      if (savedInstanceState == null) {
          SelectItem(0);
      }
  
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      String pointsLeft = sharedPreferences.getString(
              Constant.POINTS_LEFT, "");
      getMenuInflater().inflate(R.menu.main, menu);
      this.menu = menu;
      MenuItem pointsMenu = menu.findItem(R.id.action_settings);
      pointsMenu.setTitle(pointsLeft + " Points");
      return true;
  }
  
  public void SelectItem(int possition) {
  
      Fragment fragment = null;
      Bundle args = new Bundle();
      switch (possition) {
      case 0:
          fragment = new FragmentWelcome();
          args.putString(FragmentWelcome.ITEM_NAME, dataList.get(possition)
                  .getItemName());
          args.putInt(FragmentWelcome.IMAGE_RESOURCE_ID,
                  dataList.get(possition).getImgResID());
          fragment.setArguments(args);
          FragmentManager frgManager0 = getFragmentManager();
          frgManager0.beginTransaction()
                  .replace(R.id.content_frame, fragment).commit();
          break;
      case 1:
          fragment = new FragmentAppList();
          args.putString(FragmentWelcome.ITEM_NAME, dataList.get(possition)
                  .getItemName());
          args.putInt(FragmentWelcome.IMAGE_RESOURCE_ID,
                  dataList.get(possition).getImgResID());
          fragment.setArguments(args);
          FragmentManager frgManager1 = getFragmentManager();
          frgManager1.beginTransaction()
                  .replace(R.id.content_frame, fragment).commit();
          break;
      case 5:
          fragment = new FragmentRedeemPoints();
          args.putString(FragmentWelcome.ITEM_NAME, dataList.get(possition)
                  .getItemName());
          args.putInt(FragmentWelcome.IMAGE_RESOURCE_ID,
                  dataList.get(possition).getImgResID());
          fragment.setArguments(args);
          FragmentManager frgManager2 = getFragmentManager();
          frgManager2.beginTransaction()
                  .replace(R.id.content_frame, fragment).commit();
          break;
      case 6:
          fragment = new SettingsFragment();
          args.putString(FragmentWelcome.ITEM_NAME, dataList.get(possition)
                  .getItemName());
          args.putInt(FragmentWelcome.IMAGE_RESOURCE_ID,
                  dataList.get(possition).getImgResID());
          fragment.setArguments(args);
          FragmentManager frgManager6 = getFragmentManager();
          frgManager6.beginTransaction()
                  .replace(R.id.content_frame, fragment).commit();
          break;
      case 7:
          fragment = new HelpFragment();
          args.putString(FragmentWelcome.ITEM_NAME, dataList.get(possition)
                  .getItemName());
          args.putInt(FragmentWelcome.IMAGE_RESOURCE_ID,
                  dataList.get(possition).getImgResID());
          fragment.setArguments(args);
          FragmentManager frgManager7 = getFragmentManager();
          frgManager7.beginTransaction()
                  .replace(R.id.content_frame, fragment).commit();
          break;
  
      default:
  
          break;
      }
  
      mDrawerList.setItemChecked(possition, true);
      mDrawerLayout.closeDrawer(mDrawerList);
  
  }
  
  @Override
  public void setTitle(CharSequence title) {
      mTitle = title;
      getActionBar().setTitle(mTitle);
  }
  
  @Override
  protected void onPostCreate(Bundle savedInstanceState) {
      super.onPostCreate(savedInstanceState);
      mDrawerToggle.syncState();
  }
  
  @Override
  public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
  
      mDrawerToggle.onConfigurationChanged(newConfig);
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  
      if (mDrawerToggle.onOptionsItemSelected(item)) {
          return true;
      }
  
      return false;
  }
  
  private class DrawerItemClickListener implements
          ListView.OnItemClickListener {
      @Override
      public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position,
              long id) {
          SelectItem(position);
  
      }
  }
  </code></pre>
  
  <p><strong>CustomDrawerAdapter:</strong></p>
  
  <pre><code>public class CustomDrawerAdapter extends ArrayAdapter&lt;DrawerItem&gt; {
  
  Context context;
  List&lt;DrawerItem&gt; drawerItemList;
  int layoutResID;
  
  public CustomDrawerAdapter(Context context, int layoutResourceID,
          List&lt;DrawerItem&gt; listItems) {
      super(context, layoutResourceID, listItems);
      this.context = context;
      this.drawerItemList = listItems;
      this.layoutResID = layoutResourceID;
  
  }
  
  @SuppressWarnings("static-access")
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
      // TODO Auto-generated method stub
  
      DrawerItemHolder drawerHolder;
      View view = convertView;
  
      if (view == null) {
          LayoutInflater inflater = ((Activity) context).getLayoutInflater();
          drawerHolder = new DrawerItemHolder();
  
          view = inflater.inflate(layoutResID, parent, false);
          drawerHolder.ItemName = (TextView) view
                  .findViewById(R.id.drawer_itemName);
          drawerHolder.icon = (ImageView) view.findViewById(R.id.drawer_icon);
          drawerHolder.pointsText = (TextView) view
                  .findViewById(R.id.get_login);
          drawerHolder.divider = view.findViewById(R.id.dividerView);
          drawerHolder.itemLayoutColor = (LinearLayout) view
                  .findViewById(R.id.itemLayoutColor);
          view.setTag(drawerHolder);
  
      } else {
          drawerHolder = (DrawerItemHolder) view.getTag();
  
      }
  
      DrawerItem dItem = (DrawerItem) this.drawerItemList.get(position);
      if (dItem.getPointText() == null) {
          drawerHolder.icon.setImageDrawable(view.getResources().getDrawable(
                  dItem.getImgResID()));
          drawerHolder.pointsText.setVisibility(view.GONE);
      } else {
          drawerHolder.pointsText.setText(dItem.getPointText());
          }
      drawerHolder.itemLayoutColor.setBackgroundColor(dItem.layoutColorCode);
      drawerHolder.divider.setBackgroundColor(dItem.colorCode);
      drawerHolder.ItemName.setText(dItem.getItemName());
  
      return view;
  }
  
  private static class DrawerItemHolder {
      TextView ItemName;
      ImageView icon;
      TextView pointsText;
      View divider;
      LinearLayout itemLayoutColor;
  }
   }
  </code></pre>