Hide a Navigation Drawer Menu Item - Android

后端 未结 8 757
春和景丽
春和景丽 2021-01-30 06:31

I have a navigation drawer. When an event is called, I want to hide one of my navigation menu item for user. How can I do that?

protected void onCreate(Bundle sa         


        
8条回答
  •  暖寄归人
    2021-01-30 06:48

    Hide/Show Navigation item

    Make changes in your NavDrawerListAdapter as follow,

    public class MyListAdapter extends BaseAdapter {
    
        Context context;
        ArrayList listMenuItem;
        ArrayList listMenuItem1;
        int hideViewIndex = -1;
    
        public MyListAdapter(Context context, ArrayList listMenuItem) {
            this.context = context;
            this.listMenuItem = listMenuItem;
            listMenuItem1=new ArrayList(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);
    

提交回复
热议问题