如何从另一个类获得Android Switch状态



我正在使用一个RecyclerView,它有一个开关,当开关打开时,用户可以从a到Z组织列表,当开关关闭时,从Z到a组织列表。为了实现OnClick方法,我现在需要每个元素的位置,但元素可能在两个不同的位置(取决于用户选择的排序(,所以为了知道元素在哪里,我需要从实现OnClick方法的类中了解Switch的状态。

这是我的Switch排序实现:

@Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    switchStatus.setText("Sorting alphabetically");

                    Collections.sort(categories, new Comparator<Categories>() {
                        @Override
                        public int compare(Categories lhs, Categories rhs) {
                            return lhs.title.compareTo(rhs.title);
                        }
                    });

                    ca.notifyDataSetChanged();
                }else{
                    switchStatus.setText("Sorting by popularity");
                    Collections.sort(categories, new Comparator<Categories>() {
                        @Override
                        public int compare(Categories rhs, Categories lhs) {
                            return lhs.title.compareTo(rhs.title);
                        }
                    });
                ca.notifyDataSetChanged();
                }
            }
        });

        //check the current state before we display the screen
        if(categoriesSortingSwitch.isChecked()){
            switchStatus.setText("Sorting alphabetically");

            Collections.sort(categories, new Comparator<Categories>() {
                @Override
                public int compare(Categories lhs, Categories rhs) {
                    return lhs.title.compareTo(rhs.title);
                }
            });

        }
        else {
            switchStatus.setText("Sorting by popularity");
            Collections.sort(categories, new Comparator<Categories>() {
                @Override
                public int compare(Categories rhs, Categories lhs) {
                    return lhs.title.compareTo(rhs.title);
                }
            });
        }
    }
//I CREATED THIS METHOD THINKING IN USING IT IN THE OTHER CLASS TO GET THE STATUS
   public boolean getSwitchstatus(){
        if(categoriesSortingSwitch.isChecked()){
            return true;
        }
        else return false;
    }

这是我需要获得状态的另一个类的方法:

@Override
        public void onClick(View v) {
            final Intent intent;
            int position = getAdapterPosition();
            if (position==0){
                if(/** find a way to see if it is on or off and if it is on do this**/){
                intent =  new Intent(context, nose.class);
                context.startActivity(intent);
                }
                else/** if it is off**/{
                }
            }
        }

在简历中,我需要找到一种方法来获得开关的状态,这样我就可以告诉元素的位置。

非常感谢。

感谢MkiiSoft的建议,这就是我所做的,并且工作得很完美:

    @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if(isChecked){
                        switchStatus.setText("Sorting alphabetically");

                        Collections.sort(categories, new Comparator<Categories>() {
                            @Override
                            public int compare(Categories lhs, Categories rhs) {
                                return lhs.title.compareTo(rhs.title);
                            }
                        });

                        ca.notifyDataSetChanged();

//JUST ADDED THIS SHARED PREFERENCE WITH THE STRINGS ("it's","on") WHEN THE SWITCH IS ON
                        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                        SharedPreferences.Editor editor = preferences.edit();
                        editor.putString("it's","on");
                        editor.apply();
                    }else{
                        switchStatus.setText("Sorting by popularity");
                        Collections.sort(categories, new Comparator<Categories>() {
                            @Override
                            public int compare(Categories rhs, Categories lhs) {
                                return lhs.title.compareTo(rhs.title);
                            }
                        });
                    ca.notifyDataSetChanged();
    //JUST ADDED THIS SHARED PREFERENCE WITH THE STRINGS ("it's","off") WHEN THE SWITCH IS OFF
                        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                        SharedPreferences.Editor editor = preferences.edit();
                        editor.putString("it's", "off");
                        editor.apply();
                    }
                }
            });

然后,在我现在需要切换状态的课堂上,我简单地比较了字符串,并根据字符串的匹配或不匹配,提出了一个不同的活动,这样:

    public void onClick(View v) {
                final Intent intent;
                int position = getAdapterPosition();
                SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
                String onoff = preferences.getString("it's", "");
//IF IT IS ON DO THIS
                if(onoff.equalsIgnoreCase("on"))
                {
                    if (position==0){
                        intent =  new Intent(context, nose.class);
                        context.startActivity(intent);
                    }
    //IF IT IS OFF DO THIS
                } else if (onoff.equalsIgnoreCase("off")){
                    if (position==0){
                        intent =  new Intent(context, nose2.class);
                        context.startActivity(intent);
                    }
                }
            }

最新更新