android - 将数组保存到共享首选项并在 ListView 中显示它

标签 android listview arraylist sharedpreferences

我需要将用户输入保存到共享首选项中,并从 ListView 中的共享首选项中显示它。我怎样才能做到这一点?

现在我的代码添加到 ListView ,但不保存它。

ListView listView;
Button AddWebsiteBtn;
EditText WebsiteName;
String[] ListOfWebsites = new String[]{};
SharedPreferences preferences;
SharedPreferences.Editor editor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add);
    listView = (ListView) findViewById(R.id.list_of_websites);
    AddWebsiteBtn = (Button) findViewById(R.id.btn_submit);
    WebsiteName = (EditText) findViewById(R.id.website_name);

    //using this part to add it to listview, maybe will need to remove it when shared preferences will work
    final List< String > ListElementsArrayList = new ArrayList< String >
            (Arrays.asList(ListOfWebsites));

    final ArrayAdapter < String > adapter = new ArrayAdapter< String >
            (AddActivity.this, android.R.layout.simple_list_item_1,
                    ListElementsArrayList);

    listView.setAdapter(adapter);

    AddWebsiteBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            ListElementsArrayList.add(WebsiteName.getText().toString());
            adapter.notifyDataSetChanged();
        }
    });
}

最佳答案

首先,您必须将所有列表项存储到 ArrayList,然后将 ArrayList 存储到 SharedPreference

变量声明

SharedPreferences shared;
ArrayList<String> arrPackage;

变量初始化:

  shared = getSharedPreferences("App_settings", MODE_PRIVATE);
 // add values for your ArrayList any where...
 arrPackage = new ArrayList<>();

.将值存储到sharedPreference:

 private void packagesharedPreferences() {
   SharedPreferences.Editor editor = shared.edit();
   Set<String> set = new HashSet<String>();
   set.addAll(arrPackage);
   editor.putStringSet("DATE_LIST", set);
   editor.apply();
   Log.d("storesharedPreferences",""+set);
   }

检索sharedPreference的值:

 private void retriveSharedValue() {
   Set<String> set = shared.getStringSet("DATE_LIST", null);
   arrPackage.addAll(set);
   Log.d("retrivesharedPreferences",""+set);
 }

关于android - 将数组保存到共享首选项并在 ListView 中显示它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48784202/

相关文章:

android - 折叠工具栏和nestedscrollview滚动不顺畅

android - Poputaing 时 ListView 为空

java - 如何在android中创建带标题的水平图片列表?

java - TreeSet 排序不正确

java - Arraylist 删除方法(越界除外)

android - Android 中的自定义域邮件

Android SyncAdapter 用例

listview - flutter ListView 标题

JAVA - 如何从 JTree 访问 ArrayList 的对象

android - TextView 缓冲区类型