2017-01-23 58 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", ""); 

和分裂最喜歡的,並獲得分隔值和分裂的::