Search code examples
javaandroidsharedpreferencesandroid-sharedpreferences

How do I retain my listview after leaving the activity in android?


I have a listview in which I want to store specific data everytime the user clicks on the add button. However until now I have had little succes with the implementation. I know that it has to be done by using sharedpreferences and have tried to implement the saving status of sharedpreferences and the restoring status, but still my listview only adds the element that is currently clicked.

    package com.example.daniel.pset3_daniel_jacob;

import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class listview extends AppCompatActivity {

    ArrayList<String> dataa;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        onRestoredPreferences();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listview);
        Bundle extras = getIntent().getExtras();
        String dataExtra = extras.getString("key");
        dataa = new ArrayList<String>();
        dataa.add(dataExtra);
        ListView listView = (ListView) findViewById(R.id.listview);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, dataa);
        assert listView != null;
        listView.setAdapter(adapter);
        Savedpreferences(dataa);


    }

    public void Savedpreferences(List<String> dataa) {


        SharedPreferences preferences = this.getSharedPreferences("object", 0);
        SharedPreferences.Editor editor = preferences.edit();
        List<String> arraylist = new ArrayList<String>(dataa);
        Set<String> newset = new HashSet<String>(arraylist);
        editor.putStringSet("stringset", newset);
        editor.commit();
    }


    public void onRestoredPreferences()
    {
        SharedPreferences preferences = getApplicationContext().getSharedPreferences("object", 0);
        Set<String> getdataback = preferences.getStringSet("stringset", null);
        List <String> arraylist = new ArrayList<String>(getdataback);
    }

}

I hope someone can help me to tell me what i am doing wrong


Solution

  • Try the below code and let me know if any issues.

    public class ListviewActivity extends AppCompatActivity {
    
            ArrayList<String> dataa;
    
            List <String> arraylist = new ArrayList<>();
            @Override
            protected void onCreate(Bundle savedInstanceState) {
    
                onRestoredPreferences();
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_listview);
                Bundle extras = getIntent().getExtras();
                String dataExtra = extras.getString("key");
                dataa = new ArrayList<String>();
                dataa.addAll(arraylist);
                dataa.add(dataExtra);
                ListView listView = (ListView) findViewById(R.id.listview);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, dataa);
                assert listView != null;
                listView.setAdapter(adapter);
                Savedpreferences(dataa);
    
    
            }
    
            public void Savedpreferences(List<String> dataa) {
    
    
                SharedPreferences preferences = this.getSharedPreferences("object", 0);
                SharedPreferences.Editor editor = preferences.edit();
                List<String> arraylist = new ArrayList<String>(dataa);
                Set<String> newset = new HashSet<String>(arraylist);
                editor.putStringSet("stringset", newset);
                editor.commit();
            }
    
    
            public void onRestoredPreferences()
            {
                SharedPreferences preferences = getApplicationContext().getSharedPreferences("object", 0);
                Set<String> getdataback = preferences.getStringSet("stringset", null);
                arraylist.clear();
                arraylist.addAll(getdataback);
            }
    
        }