Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中退出活动后,如何保留我的listview?_Java_Android_Sharedpreferences_Android Sharedpreferences - Fatal编程技术网

Java 在android中退出活动后,如何保留我的listview?

Java 在android中退出活动后,如何保留我的listview?,java,android,sharedpreferences,android-sharedpreferences,Java,Android,Sharedpreferences,Android Sharedpreferences,我有一个listview,每当用户单击add按钮时,我都希望在其中存储特定的数据。然而,到目前为止,我在实施方面几乎没有成功。我知道这必须通过使用SharedReferences来完成,并尝试实现SharedReferences的保存状态和恢复状态,但我的listview仍然只添加当前单击的元素 package com.example.daniel.pset3_daniel_jacob; import android.content.SharedPreferences; import

我有一个listview,每当用户单击add按钮时,我都希望在其中存储特定的数据。然而,到目前为止,我在实施方面几乎没有成功。我知道这必须通过使用SharedReferences来完成,并尝试实现SharedReferences的保存状态和恢复状态,但我的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);
    }

}
package com.example.daniel.pset3_daniel_jacob;
导入android.content.SharedReferences;
导入android.preference.PreferenceManager;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入java.io.Serializable;
导入java.util.ArrayList;
导入java.util.HashSet;
导入java.util.List;
导入java.util.Set;
公共类listview扩展了AppCompatActivity{
arraylistdataa;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
onRestoredPreferences();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u列表视图);
Bundle extras=getIntent().getExtras();
字符串dataExtra=extras.getString(“key”);
dataa=新的ArrayList();
dataa.add(dataExtra);
ListView ListView=(ListView)findViewById(R.id.ListView);
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,android.R.id.text1,dataa);
断言listView!=null;
setAdapter(适配器);
保存数据引用(dataa);
}
公共void savedReferences(列表数据A){
SharedReferences首选项=this.getSharedReferences(“对象”,0);
SharedReferences.Editor=首选项.edit();
List arraylist=新的arraylist(dataa);
Set newset=newhashset(arraylist);
编辑器.putStringSet(“stringset”,新闻集);
commit();
}
在RestoredPreferences()上公共无效
{
SharedReferences首选项=getApplicationContext()。GetSharedReferences(“对象”,0);
Set getdataback=preferences.getStringSet(“stringset”,null);
List arraylist=新建arraylist(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);
        }

    }
公共类ListviewActivity扩展了AppCompatActivity{
arraylistdataa;
List arraylist=新建arraylist();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
onRestoredPreferences();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u列表视图);
Bundle extras=getIntent().getExtras();
字符串dataExtra=extras.getString(“key”);
dataa=新的ArrayList();
dataa.addAll(arraylist);
dataa.add(dataExtra);
ListView ListView=(ListView)findViewById(R.id.ListView);
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,android.R.id.text1,dataa);
断言listView!=null;
setAdapter(适配器);
保存数据引用(dataa);
}
公共void savedReferences(列表数据A){
SharedReferences首选项=this.getSharedReferences(“对象”,0);
SharedReferences.Editor=首选项.edit();
List arraylist=新的arraylist(dataa);
Set newset=newhashset(arraylist);
编辑器.putStringSet(“stringset”,新闻集);
commit();
}
在RestoredPreferences()上公共无效
{
SharedReferences首选项=getApplicationContext()。GetSharedReferences(“对象”,0);
Set getdataback=preferences.getStringSet(“stringset”,null);
arraylist.clear();
addAll(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);
        }

    }
公共类ListviewActivity扩展了AppCompatActivity{
arraylistdataa;
List arraylist=新建arraylist();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
onRestoredPreferences();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u列表视图);
Bundle extras=getIntent().getExtras();
字符串dataExtra=extras.getString(“key”);
dataa=新的ArrayList();
dataa.addAll(arraylist);
dataa.add(dataExtra);
ListView ListView=(ListView)findViewById(R.id.ListView);
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,android.R.id.text1,dataa);
断言listView!=null;
setAdapter(适配器);
保存数据引用(dataa);
}
公共void savedReferences(列表数据A){
SharedReferences首选项=this.getSharedReferences(“对象”,0);
SharedReferences.Editor=首选项.edit();
List arraylist=新的arraylist(dataa);
Set newset=newhashset(arraylist);
编辑器.putStringSet(“stringset”,新闻集);
commit();
}
在RestoredPreferences()上公共无效
{
SharedReferences首选项=getApplicationContext()。GetSharedReferences(“对象”,0);
Set getdataback=preferences.getStringSet(“stringset”,null);
arraylist.clear();
addAll(getdataback);
}
}

如果您想保存以备将来使用,那么最好保存在SharedReference中,或者以换行符的形式写入文件(),如果您想保存以备将来使用,那么最好保存在SharedReference中,或者以换行符的形式写入文件(),您知道,
onRestoreInstanceState
onSaveInstanceState
是实现这一目的的有效方法