简体   繁体   中英

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

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);
        }

    }

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