简体   繁体   中英

how to retrive the value of shared preference for checking the condition

here I have three buttons Yes no maybe for three buttons I have changed the colour when the button clicked and store the value of clicked button in shared preference for hold the colour when ever I back to the button

@Override public View getView(final int position, View convertView, ViewGroup parent) {

        if (convertView == null)
            convertView = mInflater.inflate(R.layout.invitation, null);
        eventNameTxtV = (TextView) convertView.findViewById(R.id.invitation_title);
        eventPlaceTxtV = (TextView) convertView.findViewById(R.id.invitation_place);
        eventNameTxtV.setText(eventMOs.get(position).getText());
        eventPlaceTxtV.setText(eventMOs.get(position).getPlace());

        convertView.setTag(position);
        View v = convertView.findViewById(R.id.invitation_single);

        final Button yesBtn = (Button) convertView.findViewById(R.id.yesbutton);
        final Button noBtn = (Button) convertView.findViewById(R.id.nobutton);
        final Button maybeBtn = (Button) convertView.findViewById(R.id.buttonmaybe);


        final LinearLayout eventLayout = (LinearLayout) convertView.findViewById(R.id.invitation_single);


        final LinearLayout responseLayout = (LinearLayout) convertView.findViewById(R.id.hidden);

        //Based on the user click, response will be stored



        yesBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                // highlight the button when clicked
                yesBtn.setBackgroundColor(Color.YELLOW);
                noBtn.setBackgroundColor(Color.BLUE);
                maybeBtn.setBackgroundColor(Color.BLUE);
                responseLayout.setVisibility(View.GONE);
                //If user clicks yes button in invitation response layout,response would be stored as 1 for event user
                final int response = 1;
                final long eventId = eventMOs.get(position).getEventId();
                userMO.setIsAttending(response);
                //create shared preferences here

                prefs =getActivity().getSharedPreferences("mypref", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor =prefs.edit();
                editor.putString("buttonClicked","true");
                editor.commit();

                /*SharedPreferences sharedpreferences = getActivity().getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedpreferences.edit();
                editor.putInt("clicked_btn", 1);
                editor.commit();*/
                new AsyncTask<Void, Void, String>() {
                    protected String doInBackground(Void... arg0) {
                        return userDelegate.updateEventUserRelationShipMapping(userMO, eventId);

                    }

                }.execute(null, null, null);

            }

        });

        noBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yesBtn.setBackgroundColor(Color.BLUE);
                noBtn.setBackgroundColor(Color.YELLOW);
                maybeBtn.setBackgroundColor(Color.BLUE);
                responseLayout.setVisibility(View.GONE);
                //If user clicks no button in invitation response layout,response would be stored as 0 for event user
                final int response = 0;
                final long eventId = eventMOs.get(position).getEventId();
                userMO.setIsAttending(response);

                SharedPreferences sharedpreferences = getActivity().getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedpreferences.edit();
                editor.putInt("clicked_btn", 0);
                editor.commit();

                new AsyncTask<Void, Void, String>() {
                    protected String doInBackground(Void... arg0) {
                        return userDelegate.updateEventUserRelationShipMapping(userMO, eventId);

                    }

                }.execute(null, null, null);
            }
        });
        maybeBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yesBtn.setBackgroundColor(Color.BLUE);
                noBtn.setBackgroundColor(Color.BLUE);
                maybeBtn.setBackgroundColor(Color.YELLOW);
                responseLayout.setVisibility(View.GONE);
                //If user clicks maybe button in invitation response layout,response would be stored as  for event user
                final int response = 2;
                userMO.setIsAttending(response);
                final long eventId = eventMOs.get(position).getEventId();

                SharedPreferences sharedpreferences = getActivity().getSharedPreferences("PREFERENCE", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedpreferences.edit();
                editor.putInt("clicked_btn",2);
                editor.commit();

                new AsyncTask<Void, Void, String>() {
                    protected String doInBackground(Void... arg0) {
                        return userDelegate.updateEventUserRelationShipMapping(userMO, eventId);

                    }

                }.execute(null, null, null);
            }
        });

here I have to hold the colour change of button whenever I return back to the app if I selected any of the button .so how to use and retrieve the shared preference value

this is the code for show the yes no maybe buttons together when I clicked the event

eventLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                                      switch (v.getId()) {
                        case R.id.invitation_single:
                            responseLayout.setVisibility(View.VISIBLE);
                            break;

                    }
                }


           });

SharedPreferences gives you the ability to store different kind of data, such as boolean or int .

To accomplish your task, you could store the color of each button in SharedPreferences ; something like:

 editor.putInt("button_one", R.color.buttone_one_selected);

Remember, when you'll retrieve that color, you have to resolve it with:

int buttonOneColor = sharedPrefs.getInt("button_one", default_value); 
int colorBackground = getResources().getColor(buttonOneColor);

You can change color of your button using this...

In onCreate:

SharedPreferences prefs = getSharedPreferences("myPrefs",
                Context.MODE_PRIVATE);

now check for the boolean value stored in the preferences :

boolean b1_pressed = prefs.getBoolean("button1_pressed",false);

if(b1_pressed){

//code to change color of button to pressed state

}

else{

//code to change color of button to normal state

}

Now in your button's onClick method:

if(b1_pressed){

SharedPreferences.editor editor = prefs.edit();

editor.putBoolean("button1_pressed",false);

editor.commit();

}
else{

SharedPreferences.editor editor = prefs.edit();

editor.putBoolean("button1_pressed",true);

editor.commit();

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM