2017-01-23 81 views
2

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

//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(); 

     } 
    }); 
+1

无论何时您优先存储该值,您都将设置递增值。但是您只能以“最喜欢的”方式获取该值。 –

+0

谢谢Jaimin。我明白了你的观点。 –

回答

1

后,您所做的键"favourite" + incrementedValue和与它们不一样的关键"favourite"访问值,它看起来就像你在一个String这又是不恰当的保存两个值ID和名称,以便改变你这样的代码,

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

和访问数据这样,

SharedPreferences faves = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
String id = faves.getString("favourite id"+INCREMENT_VALUE_COUNT, ""); 
String name = faves.getString("favourite name"+INCREMENT_VALUE_COUNT,""); 

你有你想要得到的数据的位置编号来代替INCREMENT_VALUE_COUNT。

+1

非常感谢Soni。它工作完美。 –

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", ""); 

和分裂最喜欢的,并获得分隔值和分裂的::