我使用共享偏好保存了多个数据。我想从共享首选项中读取多个数据。我试过但不能成功。我可以读取一个数据但无法读取多个数据。谢谢。
//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();
}
});
答案 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", "");
按,
拆分收藏夹并获取分隔值,然后按::
分割