Hide a Navigation Drawer Menu Item - Android

徘徊边缘 提交于 2019-12-02 16:07:53
NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    hideItem();
  }


private void hideItem()
   {
     navigationView = (NavigationView) findViewById(R.id.nav_view);
     Menu nav_Menu = navigationView.getMenu();
     nav_Menu.findItem(R.id.nav_settings).setVisible(false);
   }
Pravin Dharam

This will work as setInvisibility(GONE):

 Menu nav_Menu = navigationView.getMenu();
 nav_Menu.findItem(R.id.nav_profile).setVisible(false);
 nav_Menu.findItem(R.id.menu_login).setVisible(true);
 nav_Menu.findItem(R.id.menu_logout).setVisible(false);
 nav_Menu.findItem(R.id.menu_regsitration).setVisible(true);

You can delete the second item of listview via following code:

navDrawerItems.remove(2);
((BaseAdapter)adapter).notifyDataSetChanged();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

Menu menu =navigationView.getMenu();

MenuItem target = menu.findItem(R.id.nav_target);

target.setVisible(false);

Kotlin version

 val navigationView: NavigationView = findViewById(R.id.nav_view) as NavigationView
 val nav_Menu: Menu = navigationView.getMenu()
 nav_Menu.findItem(R.id.nav_stock).setVisible(false)

Hide/Show Navigation item

Make changes in your NavDrawerListAdapter as follow,

public class MyListAdapter extends BaseAdapter {

    Context context;
    ArrayList<ItemListModel> listMenuItem;
    ArrayList<ItemListModel> listMenuItem1;
    int hideViewIndex = -1;

    public MyListAdapter(Context context, ArrayList<ItemListModel> listMenuItem) {
        this.context = context;
        this.listMenuItem = listMenuItem;
        listMenuItem1=new ArrayList<ItemListModel>(listMenuItem);
    }

    @Override
    public int getCount() {
        return listMenuItem.size();
    }

    @Override
    public Object getItem(int position) {
        return listMenuItem.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    private class ViewHolder
    {
        private ImageView imgLogo;
        private TextView txtItemName;
    }

    public void hideView(int pos)
    {
        listMenuItem.remove(pos);
        notifyDataSetChanged();
    }

    public void showView(int pos)
    {
        listMenuItem.add(pos, listMenuItem1.get(pos));
        notifyDataSetChanged();
    }

    @SuppressLint("InflateParams")
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder viewHolder = null;
        if(convertView == null)
        {
            LayoutInflater myLayoutInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = myLayoutInflater.inflate(R.layout.activity_item_list, null);
            viewHolder = new ViewHolder();
            viewHolder.imgLogo = (ImageView) convertView.findViewById(R.id.imgLogo);
            viewHolder.txtItemName = (TextView) convertView.findViewById(R.id.txtItemName);
            convertView.setTag(viewHolder);
        }
        else
        {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        ItemListModel itemListModel = listMenuItem.get(position);
        viewHolder.imgLogo.setImageDrawable(itemListModel.getImageLogo());
        viewHolder.txtItemName.setText(itemListModel.getStrItemName());

        return convertView;
    }

and call this method in activity as follow,

adapter.hideView(2);
//adapter.showView(2);

NavigationView navigationView;

    mapIntentActivity = getIntent();
    navItemString = mapIntentActivity.getStringExtra("success");

    if(navItemString != null) {

        navigationView = (NavigationView) findViewById(R.id.nav_view);
        Menu nav_Menu = navigationView.getMenu();
        nav_Menu.findItem(R.id.nav_car).setVisible(false);

    }
    //hide logout menu item when the user is not loggrd in
    //Checking the condition whether the user is logged in or not

    if (!SharedPrefManager.getmInstance(this).isLoggedIn()){
        Menu nav_Menu = navigationView.getMenu();
    nav_Menu.findItem(R.id.nav_logout).setVisible(false);
    }


 //SharedPrefManager .java class where we define the isLoggedIn Method()

import android.content.Context;
import android.content.SharedPreferences;

import com.motortrade.motortrade.t_Model.User;

public class SharedPrefManager {

private static final String SHARED_PREF_NAME = "my_shared_pref";

private  static SharedPrefManager mInstance;
private Context mCtx;

private SharedPrefManager(Context mCtx){
    this.mCtx = mCtx;
}

public static synchronized SharedPrefManager getmInstance(Context mCtx){
    if (mInstance == null){
        mInstance = new SharedPrefManager(mCtx);
    }
    return mInstance;
}

public boolean isLoggedIn(){
    SharedPreferences preferences = mCtx.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);

   return preferences.getInt("user_id", -1) != -1;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!