从一个按钮创建保存列表

时间:2015-08-08 21:59:20

标签: java android xml string button

我的项目需要帮助。我需要能够按下使用共享首选项的保存按钮,每次按下该按钮,我都需要它来获取保存的数据并将其像列表一样堆叠在一起。关键值是"结果"。因此,save按钮获取字符串和整数,并将其放在我的Main活动XML布局上。但是,如果我再次使用不同的整数或字符串按save,它将替换原来保存的原始字符串和整数。我希望它能够保留原始字符串和整数,如果我第一次保存它并在原始下面创建一个新的字符串和整数,如果我再做第二次,依此类推。请帮忙!

这是我的保存活动:

    public void save(View view){

    Date date = new Date();
    String stringDate = DateFormat.getDateInstance().format(date);

    SharedPreferences sharedPreferences = getSharedPreferences("MyData", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor =sharedPreferences.edit();
    editor.putString("result",String.format(stringDate, date) + " - " + text_view5.getText().toString());

    editor.commit();
    Toast.makeText(this, "Saved successfully!", Toast.LENGTH_LONG).show();

}  

这是我的加载活动:

    resultPhysical = (TextView) findViewById(R.id.home);

    SharedPreferences sharedPreferences = getSharedPreferences("MyData", Context.MODE_PRIVATE);
    String physicalresult = sharedPreferences.getString("result", DEFAULT);
    String physicalresult2= sharedPreferences.getString("result2", DEFAULT);
    if (physicalresult.equals(DEFAULT)){
        Toast.makeText(this,"No Data Found", Toast.LENGTH_LONG).show();
    }
    else{
        resultPhysical.setText(physicalresult);
    }


}

1 个答案:

答案 0 :(得分:0)

您可以轻松保存它们,只需创建一个额外的变量,该变量引用已保存结果的大小,以便您可以循环它们。要开始保存,请获取大小,然后使用索引保存

int size = sharedPreferences.getInt("size", 0); // if it doesn't exist, get 0
// then save the result like
editor.putString("result" + String.valueOf(size), String.format(stringDate, date) + " - " + text_view5.getText().toString()); // just add index to result
// then increase the size
editor.putInt("size", ++size);
editor.commit();

加载结果

StringBuilder results = new StringBuilder();
int size = int size = sharedPreferences.getInt("size", 0); // get the size to start looping
if(size == 0){ // if results are empty
    // show toast there is no saved result
} else { //start looping
    for(int i = 0; i < size; i++){
        String temp = sharedPreferences.getString("result" + String.valueOf(i), DEFAULT);
        results.append(temp + " ");
    }
    resultPhysical.setText(results.toString());
}