Save new form of custom ArrayList, SharedPreferences
noobie here. I have a custum ArrayAdapter with questions and answers. When one list item is longClicked, it gets removed. Now I want to save the new state of the ArrayList with the removed item, so if you go to another tab in the app and then return you will have only the remaining questions.
I looked online and found something that looks like what I need, but I can't see why it won't work.
public class OnePointQuestion extends AppCompatActivity {
ArrayList<Question> TheQuestion;
String key = "ABCD";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
if(TheQuestion == null){
createList();
}else{
getArrayList(key);
}
final MyAdapter adapter = new MyAdapter(this, TheQuestion);
ListView listView = findViewById(R.id.list);
listView.setAdapter(adapter);
//When the list item is clicked
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Identify the current question
Question currentQuestion = TheQuestion.get(position);
//Send the answer to a second page to be shown
Intent i = new Intent(OnePointQuestion.this, TheAnswer.class);
i.putExtra("TheAnswer", currentQuestion.getAnswer());
startActivity(i);
}
});
//When the list item is long clicked
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
//Identify the current question
Question currentQuestion = TheQuestion.get(position);
//Remove this element of the list
TheQuestion.remove(currentQuestion);
adapter.notifyDataSetChanged();
Toast.makeText(OnePointQuestion.this, "Urmatoarea intrebare", Toast.LENGTH_SHORT).show();
return true;
}
});
}
//Save the ArrayList
public void saveArrayList(ArrayList<Question> list, String key){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(OnePointQuestion.this);
SharedPreferences.Editor editor = prefs.edit();
Gson gson = new Gson();
String json = gson.toJson(list);
editor.putString(key, json);
editor.apply(); // This line is IMPORTANT !!!
Toast.makeText(OnePointQuestion.this, "Saved", Toast.LENGTH_SHORT).show();
}
//Load the ArrayList
public ArrayList<Question> getArrayList(String key){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(OnePointQuestion.this);
Gson gson = new Gson();
String json = prefs.getString(key, null);
Type type = new TypeToken<ArrayList<Question>>() {}.getType();
Toast.makeText(OnePointQuestion.this, "Loaded", Toast.LENGTH_SHORT).show();
return gson.fromJson(json, type);
}
//Load the ArrayList when the app gets to the OnStart
@Override
protected void onStart() {
super.onStart();
getArrayList(key);
}
@Override
protected void onPause() {
super.onPause();
saveArrayList(TheQuestion, key);
}
public void createList(){
//Create the list of questions
TheQuestion = new ArrayList<>();
TheQuestion.add(new Question("Cum te cheama?", "Irelevant"));
TheQuestion.add(new Question("Cati ani ai?", "Prea multi"));
TheQuestion.add(new Question("De ce ai dat la Poli", "Asta ma intreb si eu"));
}
}
The "save" and "load" methods I'm trying to use are near the end.
If you can tell me what I am doing wrong, I would appreciate it, thanks :)
java android sharedpreferences
add a comment |
noobie here. I have a custum ArrayAdapter with questions and answers. When one list item is longClicked, it gets removed. Now I want to save the new state of the ArrayList with the removed item, so if you go to another tab in the app and then return you will have only the remaining questions.
I looked online and found something that looks like what I need, but I can't see why it won't work.
public class OnePointQuestion extends AppCompatActivity {
ArrayList<Question> TheQuestion;
String key = "ABCD";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
if(TheQuestion == null){
createList();
}else{
getArrayList(key);
}
final MyAdapter adapter = new MyAdapter(this, TheQuestion);
ListView listView = findViewById(R.id.list);
listView.setAdapter(adapter);
//When the list item is clicked
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Identify the current question
Question currentQuestion = TheQuestion.get(position);
//Send the answer to a second page to be shown
Intent i = new Intent(OnePointQuestion.this, TheAnswer.class);
i.putExtra("TheAnswer", currentQuestion.getAnswer());
startActivity(i);
}
});
//When the list item is long clicked
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
//Identify the current question
Question currentQuestion = TheQuestion.get(position);
//Remove this element of the list
TheQuestion.remove(currentQuestion);
adapter.notifyDataSetChanged();
Toast.makeText(OnePointQuestion.this, "Urmatoarea intrebare", Toast.LENGTH_SHORT).show();
return true;
}
});
}
//Save the ArrayList
public void saveArrayList(ArrayList<Question> list, String key){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(OnePointQuestion.this);
SharedPreferences.Editor editor = prefs.edit();
Gson gson = new Gson();
String json = gson.toJson(list);
editor.putString(key, json);
editor.apply(); // This line is IMPORTANT !!!
Toast.makeText(OnePointQuestion.this, "Saved", Toast.LENGTH_SHORT).show();
}
//Load the ArrayList
public ArrayList<Question> getArrayList(String key){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(OnePointQuestion.this);
Gson gson = new Gson();
String json = prefs.getString(key, null);
Type type = new TypeToken<ArrayList<Question>>() {}.getType();
Toast.makeText(OnePointQuestion.this, "Loaded", Toast.LENGTH_SHORT).show();
return gson.fromJson(json, type);
}
//Load the ArrayList when the app gets to the OnStart
@Override
protected void onStart() {
super.onStart();
getArrayList(key);
}
@Override
protected void onPause() {
super.onPause();
saveArrayList(TheQuestion, key);
}
public void createList(){
//Create the list of questions
TheQuestion = new ArrayList<>();
TheQuestion.add(new Question("Cum te cheama?", "Irelevant"));
TheQuestion.add(new Question("Cati ani ai?", "Prea multi"));
TheQuestion.add(new Question("De ce ai dat la Poli", "Asta ma intreb si eu"));
}
}
The "save" and "load" methods I'm trying to use are near the end.
If you can tell me what I am doing wrong, I would appreciate it, thanks :)
java android sharedpreferences
add a comment |
noobie here. I have a custum ArrayAdapter with questions and answers. When one list item is longClicked, it gets removed. Now I want to save the new state of the ArrayList with the removed item, so if you go to another tab in the app and then return you will have only the remaining questions.
I looked online and found something that looks like what I need, but I can't see why it won't work.
public class OnePointQuestion extends AppCompatActivity {
ArrayList<Question> TheQuestion;
String key = "ABCD";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
if(TheQuestion == null){
createList();
}else{
getArrayList(key);
}
final MyAdapter adapter = new MyAdapter(this, TheQuestion);
ListView listView = findViewById(R.id.list);
listView.setAdapter(adapter);
//When the list item is clicked
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Identify the current question
Question currentQuestion = TheQuestion.get(position);
//Send the answer to a second page to be shown
Intent i = new Intent(OnePointQuestion.this, TheAnswer.class);
i.putExtra("TheAnswer", currentQuestion.getAnswer());
startActivity(i);
}
});
//When the list item is long clicked
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
//Identify the current question
Question currentQuestion = TheQuestion.get(position);
//Remove this element of the list
TheQuestion.remove(currentQuestion);
adapter.notifyDataSetChanged();
Toast.makeText(OnePointQuestion.this, "Urmatoarea intrebare", Toast.LENGTH_SHORT).show();
return true;
}
});
}
//Save the ArrayList
public void saveArrayList(ArrayList<Question> list, String key){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(OnePointQuestion.this);
SharedPreferences.Editor editor = prefs.edit();
Gson gson = new Gson();
String json = gson.toJson(list);
editor.putString(key, json);
editor.apply(); // This line is IMPORTANT !!!
Toast.makeText(OnePointQuestion.this, "Saved", Toast.LENGTH_SHORT).show();
}
//Load the ArrayList
public ArrayList<Question> getArrayList(String key){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(OnePointQuestion.this);
Gson gson = new Gson();
String json = prefs.getString(key, null);
Type type = new TypeToken<ArrayList<Question>>() {}.getType();
Toast.makeText(OnePointQuestion.this, "Loaded", Toast.LENGTH_SHORT).show();
return gson.fromJson(json, type);
}
//Load the ArrayList when the app gets to the OnStart
@Override
protected void onStart() {
super.onStart();
getArrayList(key);
}
@Override
protected void onPause() {
super.onPause();
saveArrayList(TheQuestion, key);
}
public void createList(){
//Create the list of questions
TheQuestion = new ArrayList<>();
TheQuestion.add(new Question("Cum te cheama?", "Irelevant"));
TheQuestion.add(new Question("Cati ani ai?", "Prea multi"));
TheQuestion.add(new Question("De ce ai dat la Poli", "Asta ma intreb si eu"));
}
}
The "save" and "load" methods I'm trying to use are near the end.
If you can tell me what I am doing wrong, I would appreciate it, thanks :)
java android sharedpreferences
noobie here. I have a custum ArrayAdapter with questions and answers. When one list item is longClicked, it gets removed. Now I want to save the new state of the ArrayList with the removed item, so if you go to another tab in the app and then return you will have only the remaining questions.
I looked online and found something that looks like what I need, but I can't see why it won't work.
public class OnePointQuestion extends AppCompatActivity {
ArrayList<Question> TheQuestion;
String key = "ABCD";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
if(TheQuestion == null){
createList();
}else{
getArrayList(key);
}
final MyAdapter adapter = new MyAdapter(this, TheQuestion);
ListView listView = findViewById(R.id.list);
listView.setAdapter(adapter);
//When the list item is clicked
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Identify the current question
Question currentQuestion = TheQuestion.get(position);
//Send the answer to a second page to be shown
Intent i = new Intent(OnePointQuestion.this, TheAnswer.class);
i.putExtra("TheAnswer", currentQuestion.getAnswer());
startActivity(i);
}
});
//When the list item is long clicked
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
//Identify the current question
Question currentQuestion = TheQuestion.get(position);
//Remove this element of the list
TheQuestion.remove(currentQuestion);
adapter.notifyDataSetChanged();
Toast.makeText(OnePointQuestion.this, "Urmatoarea intrebare", Toast.LENGTH_SHORT).show();
return true;
}
});
}
//Save the ArrayList
public void saveArrayList(ArrayList<Question> list, String key){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(OnePointQuestion.this);
SharedPreferences.Editor editor = prefs.edit();
Gson gson = new Gson();
String json = gson.toJson(list);
editor.putString(key, json);
editor.apply(); // This line is IMPORTANT !!!
Toast.makeText(OnePointQuestion.this, "Saved", Toast.LENGTH_SHORT).show();
}
//Load the ArrayList
public ArrayList<Question> getArrayList(String key){
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(OnePointQuestion.this);
Gson gson = new Gson();
String json = prefs.getString(key, null);
Type type = new TypeToken<ArrayList<Question>>() {}.getType();
Toast.makeText(OnePointQuestion.this, "Loaded", Toast.LENGTH_SHORT).show();
return gson.fromJson(json, type);
}
//Load the ArrayList when the app gets to the OnStart
@Override
protected void onStart() {
super.onStart();
getArrayList(key);
}
@Override
protected void onPause() {
super.onPause();
saveArrayList(TheQuestion, key);
}
public void createList(){
//Create the list of questions
TheQuestion = new ArrayList<>();
TheQuestion.add(new Question("Cum te cheama?", "Irelevant"));
TheQuestion.add(new Question("Cati ani ai?", "Prea multi"));
TheQuestion.add(new Question("De ce ai dat la Poli", "Asta ma intreb si eu"));
}
}
The "save" and "load" methods I'm trying to use are near the end.
If you can tell me what I am doing wrong, I would appreciate it, thanks :)
java android sharedpreferences
java android sharedpreferences
asked Nov 25 '18 at 8:08
Andrei BichirAndrei Bichir
33
33
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Move getArrayList(key);
to onResume() method.
@Override
protected void onResume() {
super.onResume();
getArrayList(key);
}
see the life cycle:
It still won't work. It tells me something that the return value of the getArrayList(key) is not used. I have tried to use it some how, but it would crush my app..
– Andrei Bichir
Nov 25 '18 at 20:13
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%2f53465714%2fsave-new-form-of-custom-arraylist-sharedpreferences%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Move getArrayList(key);
to onResume() method.
@Override
protected void onResume() {
super.onResume();
getArrayList(key);
}
see the life cycle:
It still won't work. It tells me something that the return value of the getArrayList(key) is not used. I have tried to use it some how, but it would crush my app..
– Andrei Bichir
Nov 25 '18 at 20:13
add a comment |
Move getArrayList(key);
to onResume() method.
@Override
protected void onResume() {
super.onResume();
getArrayList(key);
}
see the life cycle:
It still won't work. It tells me something that the return value of the getArrayList(key) is not used. I have tried to use it some how, but it would crush my app..
– Andrei Bichir
Nov 25 '18 at 20:13
add a comment |
Move getArrayList(key);
to onResume() method.
@Override
protected void onResume() {
super.onResume();
getArrayList(key);
}
see the life cycle:
Move getArrayList(key);
to onResume() method.
@Override
protected void onResume() {
super.onResume();
getArrayList(key);
}
see the life cycle:
answered Nov 25 '18 at 8:14
navylovernavylover
3,51531119
3,51531119
It still won't work. It tells me something that the return value of the getArrayList(key) is not used. I have tried to use it some how, but it would crush my app..
– Andrei Bichir
Nov 25 '18 at 20:13
add a comment |
It still won't work. It tells me something that the return value of the getArrayList(key) is not used. I have tried to use it some how, but it would crush my app..
– Andrei Bichir
Nov 25 '18 at 20:13
It still won't work. It tells me something that the return value of the getArrayList(key) is not used. I have tried to use it some how, but it would crush my app..
– Andrei Bichir
Nov 25 '18 at 20:13
It still won't work. It tells me something that the return value of the getArrayList(key) is not used. I have tried to use it some how, but it would crush my app..
– Andrei Bichir
Nov 25 '18 at 20:13
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%2f53465714%2fsave-new-form-of-custom-arraylist-sharedpreferences%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