BaseActivity for Navigation

前端 未结 6 1732
猫巷女王i
猫巷女王i 2020-12-24 09:21

I\'m building a base activity for navigation and want something flexible so the Activity dictates to the Base Activity which layout to inflate.

I have the following<

6条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-24 10:17

        Common Navigation DraweFor All Activity
    
        ## BaseActivity.java ##
    
         public class BaseActivity extends FragmentActivity 
        {
            final String[] navDrawMenuItems = {"My Project" , "My Project1", "MyProject2", "MyProject3" ,"MyProject4","MyProject5","MyProject6"};
            final int[] navDrawMenuIcons = {R.drawable.vendor,
                    R.drawable.vendor,
                    R.drawable.vendor,
                    R.drawable.vendor,
                    R.drawable.log_icon,
                    R.drawable.vendor,
    
            };
            public RelativeLayout mRelativeLayout;
            public FrameLayout actContent;
            public ListView navList;
            LinearLayout drawer_List;
            TextView text_emp_name;
            public MenuDrawerAdapter menuDrawerAdapter;
            public ArrayList menuDrawerList = new ArrayList<>();
            public DrawerArrowDrawable drawerArrowDrawable;
            public ImageView drawer_indicator;
            public DrawerLayout drawer_layout;
            public float offset;
            public boolean flipped;
    
            SharedPreferences _SP;
            SharedPreferences.Editor _EDITOR;
    
    
    
            @Override
            protected void onCreate(Bundle savedInstanceState)
            {
                super.onCreate(savedInstanceState);
    
                for (int i = 0; i < navDrawMenuItems.length; i++)
                {
                    menuDrawerList.add(new Vendor_Wrapper(""+i,navDrawMenuItems[i], navDrawMenuIcons[0]));
                }
    
            }
    
            @Override
            public void setContentView(int layoutResID)
    
            {
                mRelativeLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.activity_base, null);
                actContent = (FrameLayout) mRelativeLayout.findViewById(R.id.main);
                // set the drawer dialog_view as main content view of Activity.
                setContentView(mRelativeLayout);
                // add dialog_view of BaseActivities inside framelayout.i.e. frame_container
                getLayoutInflater().inflate(layoutResID, actContent, true);
    
                drawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout);
                // =========================================
                final Resources resources = getResources();
                drawerArrowDrawable = new DrawerArrowDrawable(resources);
    
                drawer_indicator = (ImageView) findViewById(R.id.drawer_indicator);
                drawerArrowDrawable.setStrokeColor(resources.getColor(android.R.color.white));
                drawer_indicator.setImageDrawable(drawerArrowDrawable);
                // =========================================
    
                text_emp_name=(TextView)findViewById(R.id.text_emp_name) ;
                _SP = getSharedPreferences(Constants.pref_name, MODE_PRIVATE);
    
                text_emp_name.setText(_SP.getString("empName",""));
                drawer_List=(LinearLayout)findViewById(R.id.drawer_List);
                navList = (ListView) findViewById(R.id.drawer_List1);
                menuDrawerAdapter = new MenuDrawerAdapter(BaseActivity.this, menuDrawerList);
                navList.setAdapter(menuDrawerAdapter);
    
                navList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView adapterView, View view, int position, long l) {
                        Intent intent;
        //                Toast.makeText(getApplicationContext(),"position "+position,30).show();
                        Log.i(Constants.TAG,"drawer_position: "+position);
                        switch (position)
                        {
                            case 0:
    
                                intent = new Intent(BaseActivity.this, List_of_projects.class);
                                startActivityForResult(intent,Constants.EXIT);
        //                        
                                break;
    
                            case 1:
    
                                intent = new Intent(BaseActivity.this, List_of_projects.class);
                                startActivityForResult(intent,Constants.EXIT);
        //                        drawer_indicator.performClick();
    
                                break;
                            case 2:
                                intent = new Intent(BaseActivity.this, List_of_projects.class);
                                startActivityForResult(intent,Constants.EXIT);
        //                        drawer_indicator.performClick();
                                break;
    
                            case 3:
                                intent = new Intent(BaseActivity.this, List_of_projects.class);
                                startActivityForResult(intent,Constants.EXIT);
        //                        drawer_indicator.performClick();
                                break;
                            case 4:
                                intent = new Intent(BaseActivity.this, List_of_projects.class);
                                intent.putExtra("Type","Complaints");
                                startActivityForResult(intent,Constants.EXIT);
        //                        drawer_indicator.performClick();
                                break;
                            case 5:
                                intent = new Intent(BaseActivity.this, List_of_projects.class);
                                intent.putExtra("Type","Suggestions");
                                startActivityForResult(intent,Constants.EXIT);
                                break;
                            case 6:
                                intent = new Intent(BaseActivity.this, List_of_projects.class);
                                startActivityForResult(intent,Constants.EXIT);
                                break;
                            case 7:
    
                                System.out.println("Logout clickeffffdffffd ");
                                SharedPreferences.Editor editor = getSharedPreferences("my_pref", MODE_PRIVATE).edit();
                                editor.clear();
                                editor.commit();
                                setResult(Constants.EXIT);
                                finish();
                                break;
    
                            default:
                                break;
                        }
    
                    }
                });
    
    
                initViewsandSharedPreferencesandSQLiteAdapter();
                clickToViews();
    
            }
    
            public void setMenuDrawer(ArrayList menuDrawerList, String email)
            {
                navList = (ListView) findViewById(R.id.drawer_List1);
                menuDrawerAdapter = new MenuDrawerAdapter(BaseActivity.this, menuDrawerList);
                navList.setAdapter(menuDrawerAdapter);
            }
    
    
            public void initViewsandSharedPreferencesandSQLiteAdapter()
            {
    
                _SP = getSharedPreferences(Constants.TAG, MODE_PRIVATE);
                _EDITOR = _SP.edit();
                drawer_indicator_LL = (LinearLayout) findViewById(R.id.drawer_indicator_LL);
    
            }
    
            /**
             * Take care of popping the fragment back stack or finishing the activity
             * as appropriate.
             */
            @Override
            public void onBackPressed()
            {
                super.onBackPressed();
    
                if (drawer_layout.isDrawerVisible(Gravity.RIGHT))
                {
                    drawer_layout.closeDrawer(drawer_List);
                }
                else
                {
                    finish();
                }
            }
    
            public void clickToViews()
            {
                drawer_layout.setDrawerListener(new DrawerLayout.SimpleDrawerListener()
                {
                    @Override
                    public void onDrawerSlide(View drawerView, float slideOffset) {
                        offset = slideOffset;
                        // Sometimes slideOffset ends up so close to but not quite 1 or 0.
                        if (slideOffset >= .995)
                        {
                            flipped = true;
                            drawerArrowDrawable.setFlip(flipped);
                        } else if (slideOffset <= .005)
                        {
                            flipped = false;
                            drawerArrowDrawable.setFlip(flipped);
                        }
    
                        drawerArrowDrawable.setParameter(offset);
                    }
                });
    
                drawer_indicator.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        if (drawer_layout.isDrawerVisible(Gravity.RIGHT))
                        {
                            drawer_layout.closeDrawer(drawer_List);
                        }
                        else
                        {
                            drawer_layout.openDrawer(drawer_List);
                        }
                    }
                });
    
                drawer_indicator_LL.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (drawer_layout.isDrawerVisible(Gravity.RIGHT)) {
                            drawer_layout.closeDrawer(drawer_List);
                        } else {
                            drawer_layout.openDrawer(drawer_List);
                        }
                    }
                });
    
            }
    
    
            public void NavigationPerformClick()
            {
                drawer_indicator.performClick();
            }
    
            private class MenuDrawerAdapter extends BaseAdapter
            {
    
                ArrayList menuDrawerList;
                Context context;
    
    
                public MenuDrawerAdapter(Context context, ArrayList menuDrawerList)
                {
                    super();
                    this.context = context;
                    this.menuDrawerList = menuDrawerList;
    
    
                }
    
                @Override
                public int getCount()
                {
                    return menuDrawerList.size();
                }
    
                @Override
                public Object getItem(int position)
                {
                    return position;
                }
    
                @Override
                public long getItemId(int position)
                {
                    return position;
                }
    
                @Override
                public View getView(int position, View convertView, ViewGroup parent)
                {
                    LayoutInflater layoutInflater = LayoutInflater.from(BaseActivity.this);
                    ViewHolder viewHolder;
    
                    if (convertView == null)
                    {
                        viewHolder = new ViewHolder();
                        convertView = layoutInflater.inflate(R.layout.row_menu_drawer, null);
    
                        viewHolder.tvTitle = (TextView) convertView.findViewById(R.id.tv_title);
                        viewHolder.imgIcon = (ImageView) convertView.findViewById(R.id.img_icon);
                        viewHolder.main_RL = (RelativeLayout)convertView.findViewById(R.id.main_RL);
                        viewHolder.imgIcon.setVisibility(View.GONE);
                        convertView.setTag(viewHolder);
                    }
                    else
                    {
                        viewHolder = (ViewHolder) convertView.getTag();
                    }
    
                    Vendor_Wrapper menuDrawerModel = menuDrawerList.get(position);
                    //## Setup Data below
                    String Name = menuDrawerModel.getName();
                    String id = menuDrawerModel.getId();
    
                    viewHolder.tvTitle.setText(menuDrawerModel.getName());
    
        //            viewHolder.main_RL.setOnClickListener(new ClickToView(BaseActivity.this,position,id,Name));
                    viewHolder.imgIcon.setImageResource(menuDrawerModel.getDrawable_icon());
    
                    return convertView;
    
                }
    
                public class ViewHolder
                {
                    TextView tvTitle;
                    ImageView imgIcon;
                    RelativeLayout main_RL;
                }
    
            }
    
    
            protected class MenuDrawerModel
            {
                private String title;
                private int icon;
                public String Icon_url;
    
                public MenuDrawerModel(String title, int icon, String icon_url) {
                    this.title = title;
                    this.icon = icon;
                    Icon_url = icon_url;
                }
    
                public MenuDrawerModel(String title, int icon)
                {
                    super();
                    this.title = title;
                    this.icon = icon;
                }
    
                public MenuDrawerModel() {
                    super();
                }
    
                public String getTitle() {
                    return title;
                }
    
                public void setTitle(String title)
                {
                    this.title = title;
                }
    
                public int getIcon() {
                    return icon;
                }
    
                public void setIcon(int icon)
                {
                    this.icon = icon;
                }
    
            }
    
    
            @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                System.out.println("Logout onActivityResult "+resultCode);
                if(resultCode==Constants.EXIT)
                {
                    setResult(Constants.EXIT);
                    finish();
                }
            }
        }
    
    
        ## MainActivity.java ##
    
            public class MainActivity extends BaseActivity {
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }
    
    
        ## activity_base.xml ##
    
            
    
            
    
                
    
                    
    
                    
    
                    
    
                
    
                
    
                    
    
    
                    
    
                    
                
    
            
    
        
    
    
        ## activity_main.xml ##
    
            
        
    
            
    
    
                
    
    
            
        
    
    
    public class Vendor_Wrapper
    {
        private String id;
    
        public Vendor_Wrapper(String id, String name, int drawable_icon)
        {
    
            this.id = id;
            Name = name;
            this.drawable_icon = drawable_icon;
        }
    
        private String Name;
        private String contact_no;
        private String Email_id;
        private String Address;
        private String img;
        private String PAY_MODE;
        private String min;
        private String max;
        private String imgs;
    
        private int drawable_icon;
    
        public int getDrawable_icon() {
            return drawable_icon;
        }
    
        public void setDrawable_icon(int drawable_icon) {
            this.drawable_icon = drawable_icon;
        }
    
    
    
    
    
        public String getEmail_id() {
            return Email_id;
        }
    
        public void setEmail_id(String email_id) {
            Email_id = email_id;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return Name;
        }
    
        public void setName(String name) {
            Name = name;
        }
    
        public String getContact_no() {
            return contact_no;
        }
    
        public void setContact_no(String contact_no) {
            this.contact_no = contact_no;
        }
    
        public String getAddress() {
            return Address;
        }
    
        public void setAddress(String address) {
            Address = address;
        }
    
        public String getImg() {
            return img;
        }
    
        public void setImg(String img) {
            this.img = img;
        }
    
        public String getPAY_MODE() {
            return PAY_MODE;
        }
    
        public void setPAY_MODE(String PAY_MODE) {
            this.PAY_MODE = PAY_MODE;
        }
    
        public String getMin() {
            return min;
        }
    
        public void setMin(String min) {
            this.min = min;
        }
    
        public String getMax() {
            return max;
        }
    
        public void setMax(String max) {
            this.max = max;
        }
    
        public String getImgs() {
            return imgs;
        }
    
        public void setImgs(String imgs) {
            this.imgs = imgs;
        }
    
    
    
    
        public Vendor_Wrapper(String id, String name, String contact_no, String email_id, String address, String img, String PAY_MODE, String min, String max, String imgs) {
            this.id = id;
            Name = name;
            this.contact_no = contact_no;
            Email_id = email_id;
            Address = address;
            this.img = img;
            this.PAY_MODE = PAY_MODE;
            this.min = min;
            this.max = max;
            this.imgs = imgs;
        }
    
    
    }
    

提交回复
热议问题