簡體   English   中英

在Android中離開活動后如何保留我的列表視圖?

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

我有一個listview,我想在每次用戶點擊添加按鈕時存儲特定數據。 但是到目前為止,我在實施方面幾乎沒有成功。 我知道必須通過使用sharedpreferences來完成它並嘗試實現sharedpreferences的保存狀態和恢復狀態,但我的listview仍然只添加當前單擊的元素。

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

}

我希望有人可以幫我告訴我我做錯了什么

嘗試以下代碼,如果有任何問題,請告訴我。

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

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM