Storing a 1D array of strings in Shared Preferences
I have two arrays, the first consists of 9 buttons. The second can hold 9 Strings. I have a method called getPlayerChoiceText to populate the String array with the text that is set on each button from the playerchoice
Array. How can I save this text using SharedPreferences?
private String getPlayerChoiceText()
playerchoiceText[0] = playerchoice[0].getText().toString();
playerchoiceText[1] = playerchoice[1].getText().toString();
playerchoiceText[2] = playerchoice[2].getText().toString();
playerchoiceText[3] = playerchoice[3].getText().toString();
playerchoiceText[4] = playerchoice[4].getText().toString();
playerchoiceText[5] = playerchoice[5].getText().toString();
playerchoiceText[6] = playerchoice[6].getText().toString();
playerchoiceText[7] = playerchoice[7].getText().toString();
playerchoiceText[8] = playerchoice[8].getText().toString();
return playerchoiceText;
private void saveData()
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
playerchoiceText = getPlayerChoiceText();
java android
add a comment |
I have two arrays, the first consists of 9 buttons. The second can hold 9 Strings. I have a method called getPlayerChoiceText to populate the String array with the text that is set on each button from the playerchoice
Array. How can I save this text using SharedPreferences?
private String getPlayerChoiceText()
playerchoiceText[0] = playerchoice[0].getText().toString();
playerchoiceText[1] = playerchoice[1].getText().toString();
playerchoiceText[2] = playerchoice[2].getText().toString();
playerchoiceText[3] = playerchoice[3].getText().toString();
playerchoiceText[4] = playerchoice[4].getText().toString();
playerchoiceText[5] = playerchoice[5].getText().toString();
playerchoiceText[6] = playerchoice[6].getText().toString();
playerchoiceText[7] = playerchoice[7].getText().toString();
playerchoiceText[8] = playerchoice[8].getText().toString();
return playerchoiceText;
private void saveData()
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
playerchoiceText = getPlayerChoiceText();
java android
1
Why do you maintain two arrays for this? Can't you use aMap<Button, String>
? I thinkSharedPreferences
are storing key-value pairs, which would go very well with aMap
.
– deHaar
Nov 15 '18 at 15:19
If it has to beSharedPreferences
, concatenate your array of string into one longString
and use delimiters between them (for example:
).
– Endre Börcsök
Nov 15 '18 at 15:22
add a comment |
I have two arrays, the first consists of 9 buttons. The second can hold 9 Strings. I have a method called getPlayerChoiceText to populate the String array with the text that is set on each button from the playerchoice
Array. How can I save this text using SharedPreferences?
private String getPlayerChoiceText()
playerchoiceText[0] = playerchoice[0].getText().toString();
playerchoiceText[1] = playerchoice[1].getText().toString();
playerchoiceText[2] = playerchoice[2].getText().toString();
playerchoiceText[3] = playerchoice[3].getText().toString();
playerchoiceText[4] = playerchoice[4].getText().toString();
playerchoiceText[5] = playerchoice[5].getText().toString();
playerchoiceText[6] = playerchoice[6].getText().toString();
playerchoiceText[7] = playerchoice[7].getText().toString();
playerchoiceText[8] = playerchoice[8].getText().toString();
return playerchoiceText;
private void saveData()
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
playerchoiceText = getPlayerChoiceText();
java android
I have two arrays, the first consists of 9 buttons. The second can hold 9 Strings. I have a method called getPlayerChoiceText to populate the String array with the text that is set on each button from the playerchoice
Array. How can I save this text using SharedPreferences?
private String getPlayerChoiceText()
playerchoiceText[0] = playerchoice[0].getText().toString();
playerchoiceText[1] = playerchoice[1].getText().toString();
playerchoiceText[2] = playerchoice[2].getText().toString();
playerchoiceText[3] = playerchoice[3].getText().toString();
playerchoiceText[4] = playerchoice[4].getText().toString();
playerchoiceText[5] = playerchoice[5].getText().toString();
playerchoiceText[6] = playerchoice[6].getText().toString();
playerchoiceText[7] = playerchoice[7].getText().toString();
playerchoiceText[8] = playerchoice[8].getText().toString();
return playerchoiceText;
private void saveData()
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
playerchoiceText = getPlayerChoiceText();
java android
java android
edited Nov 15 '18 at 16:51
Fantômas
32.8k156490
32.8k156490
asked Nov 15 '18 at 15:14
user10431501user10431501
448
448
1
Why do you maintain two arrays for this? Can't you use aMap<Button, String>
? I thinkSharedPreferences
are storing key-value pairs, which would go very well with aMap
.
– deHaar
Nov 15 '18 at 15:19
If it has to beSharedPreferences
, concatenate your array of string into one longString
and use delimiters between them (for example:
).
– Endre Börcsök
Nov 15 '18 at 15:22
add a comment |
1
Why do you maintain two arrays for this? Can't you use aMap<Button, String>
? I thinkSharedPreferences
are storing key-value pairs, which would go very well with aMap
.
– deHaar
Nov 15 '18 at 15:19
If it has to beSharedPreferences
, concatenate your array of string into one longString
and use delimiters between them (for example:
).
– Endre Börcsök
Nov 15 '18 at 15:22
1
1
Why do you maintain two arrays for this? Can't you use a
Map<Button, String>
? I think SharedPreferences
are storing key-value pairs, which would go very well with a Map
.– deHaar
Nov 15 '18 at 15:19
Why do you maintain two arrays for this? Can't you use a
Map<Button, String>
? I think SharedPreferences
are storing key-value pairs, which would go very well with a Map
.– deHaar
Nov 15 '18 at 15:19
If it has to be
SharedPreferences
, concatenate your array of string into one long String
and use delimiters between them (for example :
).– Endre Börcsök
Nov 15 '18 at 15:22
If it has to be
SharedPreferences
, concatenate your array of string into one long String
and use delimiters between them (for example :
).– Endre Börcsök
Nov 15 '18 at 15:22
add a comment |
3 Answers
3
active
oldest
votes
I have got the same problem. I solved it by using JSONArray
.
JSONArray choices = new JSONArray();
choices.put("1");
choices.put("2");
choices.put("3");
// Save
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("choices", choices.toString());
// Retrieve
choices = new JSONArray(sharedPreferences.getString("choices", ""));
In this way, you can easily do Insert
and Delete
operations. I hope this helps.
1
Good suggestion +1. I didn't think of that.
– Tim Biegeleisen
Nov 16 '18 at 1:44
add a comment |
Android's SharedPreferences
operates as a key value store, and does not allow you to directly store Java objects. So, representing your player choice text values as a map would make more sense, if you want to store them using shared preferences.
There is one trick you might be able to use here, if you wanted to continue representing your choice texts as an array. You could store the texts using a delimiter, e.g. pipe:
String choices = String.join("|", playerchoiceText);
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
prefs.edit().putString("choices", choices).apply();
And then, on the way out:
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
String playerchoiceText = prefs.getString("choices", "").split("\|");
Would this be done better if i used a List? Instead of a regular 1d array?
– user10431501
Nov 15 '18 at 15:48
The issue still remains the same, namely that shared prefs using a map functionality to store its data. So, you would need to adapt to a map interface.
– Tim Biegeleisen
Nov 15 '18 at 16:09
Ok, I will try it out, thanks for all yer help.
– user10431501
Nov 15 '18 at 16:10
add a comment |
Use put/getStringSet()
:
private void saveData()
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
String playerchoiceText = getPlayerChoiceText();
editor.putStringSet("player_choice", new HashSet<T>(Arrays.asList(playerchoiceText));
editor.commit();
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53322490%2fstoring-a-1d-array-of-strings-in-shared-preferences%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
I have got the same problem. I solved it by using JSONArray
.
JSONArray choices = new JSONArray();
choices.put("1");
choices.put("2");
choices.put("3");
// Save
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("choices", choices.toString());
// Retrieve
choices = new JSONArray(sharedPreferences.getString("choices", ""));
In this way, you can easily do Insert
and Delete
operations. I hope this helps.
1
Good suggestion +1. I didn't think of that.
– Tim Biegeleisen
Nov 16 '18 at 1:44
add a comment |
I have got the same problem. I solved it by using JSONArray
.
JSONArray choices = new JSONArray();
choices.put("1");
choices.put("2");
choices.put("3");
// Save
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("choices", choices.toString());
// Retrieve
choices = new JSONArray(sharedPreferences.getString("choices", ""));
In this way, you can easily do Insert
and Delete
operations. I hope this helps.
1
Good suggestion +1. I didn't think of that.
– Tim Biegeleisen
Nov 16 '18 at 1:44
add a comment |
I have got the same problem. I solved it by using JSONArray
.
JSONArray choices = new JSONArray();
choices.put("1");
choices.put("2");
choices.put("3");
// Save
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("choices", choices.toString());
// Retrieve
choices = new JSONArray(sharedPreferences.getString("choices", ""));
In this way, you can easily do Insert
and Delete
operations. I hope this helps.
I have got the same problem. I solved it by using JSONArray
.
JSONArray choices = new JSONArray();
choices.put("1");
choices.put("2");
choices.put("3");
// Save
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("choices", choices.toString());
// Retrieve
choices = new JSONArray(sharedPreferences.getString("choices", ""));
In this way, you can easily do Insert
and Delete
operations. I hope this helps.
answered Nov 15 '18 at 18:09
Uma SankarUma Sankar
182316
182316
1
Good suggestion +1. I didn't think of that.
– Tim Biegeleisen
Nov 16 '18 at 1:44
add a comment |
1
Good suggestion +1. I didn't think of that.
– Tim Biegeleisen
Nov 16 '18 at 1:44
1
1
Good suggestion +1. I didn't think of that.
– Tim Biegeleisen
Nov 16 '18 at 1:44
Good suggestion +1. I didn't think of that.
– Tim Biegeleisen
Nov 16 '18 at 1:44
add a comment |
Android's SharedPreferences
operates as a key value store, and does not allow you to directly store Java objects. So, representing your player choice text values as a map would make more sense, if you want to store them using shared preferences.
There is one trick you might be able to use here, if you wanted to continue representing your choice texts as an array. You could store the texts using a delimiter, e.g. pipe:
String choices = String.join("|", playerchoiceText);
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
prefs.edit().putString("choices", choices).apply();
And then, on the way out:
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
String playerchoiceText = prefs.getString("choices", "").split("\|");
Would this be done better if i used a List? Instead of a regular 1d array?
– user10431501
Nov 15 '18 at 15:48
The issue still remains the same, namely that shared prefs using a map functionality to store its data. So, you would need to adapt to a map interface.
– Tim Biegeleisen
Nov 15 '18 at 16:09
Ok, I will try it out, thanks for all yer help.
– user10431501
Nov 15 '18 at 16:10
add a comment |
Android's SharedPreferences
operates as a key value store, and does not allow you to directly store Java objects. So, representing your player choice text values as a map would make more sense, if you want to store them using shared preferences.
There is one trick you might be able to use here, if you wanted to continue representing your choice texts as an array. You could store the texts using a delimiter, e.g. pipe:
String choices = String.join("|", playerchoiceText);
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
prefs.edit().putString("choices", choices).apply();
And then, on the way out:
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
String playerchoiceText = prefs.getString("choices", "").split("\|");
Would this be done better if i used a List? Instead of a regular 1d array?
– user10431501
Nov 15 '18 at 15:48
The issue still remains the same, namely that shared prefs using a map functionality to store its data. So, you would need to adapt to a map interface.
– Tim Biegeleisen
Nov 15 '18 at 16:09
Ok, I will try it out, thanks for all yer help.
– user10431501
Nov 15 '18 at 16:10
add a comment |
Android's SharedPreferences
operates as a key value store, and does not allow you to directly store Java objects. So, representing your player choice text values as a map would make more sense, if you want to store them using shared preferences.
There is one trick you might be able to use here, if you wanted to continue representing your choice texts as an array. You could store the texts using a delimiter, e.g. pipe:
String choices = String.join("|", playerchoiceText);
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
prefs.edit().putString("choices", choices).apply();
And then, on the way out:
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
String playerchoiceText = prefs.getString("choices", "").split("\|");
Android's SharedPreferences
operates as a key value store, and does not allow you to directly store Java objects. So, representing your player choice text values as a map would make more sense, if you want to store them using shared preferences.
There is one trick you might be able to use here, if you wanted to continue representing your choice texts as an array. You could store the texts using a delimiter, e.g. pipe:
String choices = String.join("|", playerchoiceText);
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
prefs.edit().putString("choices", choices).apply();
And then, on the way out:
SharedPreferences prefs = getSharedPreferences(YOUR_PREFS_KEY, Context.MODE_PRIVATE);
String playerchoiceText = prefs.getString("choices", "").split("\|");
answered Nov 15 '18 at 15:25
Tim BiegeleisenTim Biegeleisen
233k1399157
233k1399157
Would this be done better if i used a List? Instead of a regular 1d array?
– user10431501
Nov 15 '18 at 15:48
The issue still remains the same, namely that shared prefs using a map functionality to store its data. So, you would need to adapt to a map interface.
– Tim Biegeleisen
Nov 15 '18 at 16:09
Ok, I will try it out, thanks for all yer help.
– user10431501
Nov 15 '18 at 16:10
add a comment |
Would this be done better if i used a List? Instead of a regular 1d array?
– user10431501
Nov 15 '18 at 15:48
The issue still remains the same, namely that shared prefs using a map functionality to store its data. So, you would need to adapt to a map interface.
– Tim Biegeleisen
Nov 15 '18 at 16:09
Ok, I will try it out, thanks for all yer help.
– user10431501
Nov 15 '18 at 16:10
Would this be done better if i used a List? Instead of a regular 1d array?
– user10431501
Nov 15 '18 at 15:48
Would this be done better if i used a List? Instead of a regular 1d array?
– user10431501
Nov 15 '18 at 15:48
The issue still remains the same, namely that shared prefs using a map functionality to store its data. So, you would need to adapt to a map interface.
– Tim Biegeleisen
Nov 15 '18 at 16:09
The issue still remains the same, namely that shared prefs using a map functionality to store its data. So, you would need to adapt to a map interface.
– Tim Biegeleisen
Nov 15 '18 at 16:09
Ok, I will try it out, thanks for all yer help.
– user10431501
Nov 15 '18 at 16:10
Ok, I will try it out, thanks for all yer help.
– user10431501
Nov 15 '18 at 16:10
add a comment |
Use put/getStringSet()
:
private void saveData()
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
String playerchoiceText = getPlayerChoiceText();
editor.putStringSet("player_choice", new HashSet<T>(Arrays.asList(playerchoiceText));
editor.commit();
add a comment |
Use put/getStringSet()
:
private void saveData()
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
String playerchoiceText = getPlayerChoiceText();
editor.putStringSet("player_choice", new HashSet<T>(Arrays.asList(playerchoiceText));
editor.commit();
add a comment |
Use put/getStringSet()
:
private void saveData()
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
String playerchoiceText = getPlayerChoiceText();
editor.putStringSet("player_choice", new HashSet<T>(Arrays.asList(playerchoiceText));
editor.commit();
Use put/getStringSet()
:
private void saveData()
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
String playerchoiceText = getPlayerChoiceText();
editor.putStringSet("player_choice", new HashSet<T>(Arrays.asList(playerchoiceText));
editor.commit();
answered Nov 15 '18 at 17:00
barmaleybarmaley
12.2k1563126
12.2k1563126
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53322490%2fstoring-a-1d-array-of-strings-in-shared-preferences%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Why do you maintain two arrays for this? Can't you use a
Map<Button, String>
? I thinkSharedPreferences
are storing key-value pairs, which would go very well with aMap
.– deHaar
Nov 15 '18 at 15:19
If it has to be
SharedPreferences
, concatenate your array of string into one longString
and use delimiters between them (for example:
).– Endre Börcsök
Nov 15 '18 at 15:22