我如何从共享偏好中获取多个数据?

时间:2017-01-23 06:59:35

标签: android sharedpreferences

我使用共享偏好保存了多个数据。我想从共享首选项中读取多个数据。我试过但不能成功。我可以读取一个数据但无法读取多个数据。谢谢。

//Save multiple data  

private static int incrementedValue = 0;
saveBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        SharedPreferences faves = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

    String id  = idEditText.getText().toString();
    String name  = nameEditText.getText().toString();

    SharedPreferences.Editor editor = faves.edit();
    editor.putString("favourite" + incrementedValue, id + "::" + name + ",");
    editor.commit();

    Toast toast = Toast.makeText(MainActivity.this, "saved!", Toast.LENGTH_SHORT);
    toast.show();
    incrementedValue++;
   }
})

以下是共享偏好代码中的读取数据。

//Show multiple data

showBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SharedPreferences faves = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
            String id = faves.getString("favourite", "");
            String name = faves.getString("favourite","");

           textShow.setText(id+" "+name);

           Toast.makeText(MainActivity.this,"Show!",Toast.LENGTH_LONG).show();

        }
    });

2 个答案:

答案 0 :(得分:3)

您已将密钥设为#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(NULL)); char letters[10]; for (int i = 0; i < 10; i++) { letters[i] = 97 + rand() % (122-97); for (int j = 1; j < i; j++) { if (letters[i]==letters[j]) { letters[i] = 97 + rand() % (122-97); // continue } } printf("%c\n", letters[i]); } } 并使用不同的密钥"favourite" + incrementedValue访问该值,并且看起来您已将值id和name保存在单个字符串中再次不合适,所以改变你的代码,

"favourite"

并访问这样的数据,

SharedPreferences.Editor editor = faves.edit();
editor.putString("favourite id" + incrementedValue, id);
editor.putString("favourite name" + incrementedValue, name);
editor.commit();

您必须将INCREMENT_VALUE_COUNT替换为您想要获取数据的位置编号。

答案 1 :(得分:0)

您可以在SharedPreferences

中添加多个数据
SharedPreferences.Editor editor = faves.edit();
editor.putString("id", id);
editor.putString("name", name);
editor.commit()

你可以通过

获得价值
String id = (faves.getString("id", "0"));
String name = (faves.getString("name", ""));

在这里你要添加由::和分隔的值。 你应该得到

 String favourite = faves.getString("favourite", "");

,拆分收藏夹并获取分隔值,然后按::分割