Android 如何显示以前的EditText用户输入以及最近的EditText用户输入?

Android 如何显示以前的EditText用户输入以及最近的EditText用户输入?,android,sharedpreferences,Android,Sharedpreferences,我有一个SharedReferences,它保存一个活动的EditText输入,并在另一个活动中显示字符串值 当我在EditText字段中输入并按下(我创建的按钮)“保存”(将EditText提交给编辑器)时,文件被成功存储和显示 但是,我希望这样,每次用户在EditText中添加另一个条目时,它都会显示在先前添加的EditText输入下面。像一张单子。我知道两人都在读取SharedReferences文件。我该怎么做呢 CustomStoreEditActivity-仅存储用户输入(EditT

我有一个SharedReferences,它保存一个活动的EditText输入,并在另一个活动中显示字符串值

当我在EditText字段中输入并按下(我创建的按钮)“保存”(将EditText提交给编辑器)时,文件被成功存储和显示

但是,我希望这样,每次用户在EditText中添加另一个条目时,它都会显示在先前添加的EditText输入下面。像一张单子。我知道两人都在读取SharedReferences文件。我该怎么做呢

CustomStoreEditActivity-仅存储用户输入(EditText条目):

CustomStoreActivity—检索数据并显示:

    public void  onResume() {
    SharedPreferences prefs = getSharedPreferences("customtime", 0);
    String shopName = prefs.getString("shopName", "Empty");
    String shopTimeM1 = prefs.getString("Monday1", " ");
    String shopTimeM2 = prefs.getString("Monday2",  " ");
    String shopTimeT1 = prefs.getString("Monday1", " ");
    String shopTimeT2 = prefs.getString("Monday2",  " ");
    String shopTimeW1 = prefs.getString("Monday1", " ");
    String shopTimeW2 = prefs.getString("Monday2",  " ");
    String shopTimeTH1 = prefs.getString("Monday1", " ");
    String shopTimeTH2 = prefs.getString("Monday2",  " ");
    String shopTimeF1 = prefs.getString("Monday1", " ");
    String shopTimeF2 = prefs.getString("Monday2",  " ");
    String shopTimeS1 = prefs.getString("Monday1", " ");
    String shopTimeS2 = prefs.getString("Monday2",  " ");
    String shopTimeSU1 = prefs.getString("Monday1", " ");
    String shopTimeSU2 = prefs.getString("Monday2",  " ");
    String shopComments = prefs.getString("comments", "");

    TextView displayPrefs = (TextView) findViewById(R.id.displayPrefs);

    displayPrefs.setText(
            "------------------------------------------------------------" +
            "\n\nSHOP NAME: " + shopName +
            "\n\nTIMINGS: " + "\n\n  Monday: " + shopTimeM1 + " - " + shopTimeM2  +
            "\n  Tuesday: " + shopTimeT1 + " - " + shopTimeT2 + "\n  Wednesday: "
            + shopTimeW1 + " - " + shopTimeW2 + "\n  Thursday: " + shopTimeTH1 
            + " - " + shopTimeTH2 + "\n  Friday: " + shopTimeF1 + " - " + shopTimeF2 + 
            "\n  Saturday: " + shopTimeS1 + " - " + shopTimeS2 + "\n  Sunday: " +
            shopTimeSU1 + " - " + shopTimeSU2 +
            "\n\nCOMMENTS: " + shopComments +
            "\n\n------------------------------------------------------------");
    super.onResume();
}

感谢您抽出宝贵的时间。

我觉得您好像在试图建立一个列表。请原谅我最初含糊不清的回答,但我保证它最终会集中在一点上

我对总体框架的建议是:

您有一个
活动
(可能是您的
CustomStoreActivity
),它显示保存的
存储
对象列表<代码>存储需要实现
可打包
可序列化
(最好是前者)

在这个
活动中
有一个
新店
按钮(如果您遵循Android设计惯例,这可能是操作栏中的“+”按钮)

按下
newstore
按钮,您的
CustomStoreActivity
调用
startActivityForResult(CustomStoreEditActivity.class)

您的
CustomStoreActivity
按照您上次询问的答案执行
onActivityResult
。在这里,您将获得一个结果代码和一个
Intent
,其中包含
Extras
(由
Intent.getExtras()
检索)

您的
CustomStoreEditActivity
接受用户输入,如上所述,它不将其写入
SharedReferences
而是使用该信息创建一个新的
Store
对象,该对象包含所有信息,并使用
setResult(结果\确定,意图)
其中
intent
是添加了
存储
额外(作为
包裹
)的
intent

这意味着当
CustomStoreEditActivity
调用
finish()
时(您将执行此操作,而不是使用意图重新启动
CustomStoreActivity
,因为
CustomStoreActivity
已经在后面)您将获得对
onActivityResult
的调用,并可以从刚才传递回来的
意图中从
附加中拉出
存储
对象

现在说到重点:

您可以在
CustomStoreActivity
中使用
ListView
,也可以使用扩展
ArrayAdapter
StoreAdapter
,并为
Store
列表中的每个项目添加一个包含该
Store
名称的视图。然后,您只需将新的
存储
对象添加到传递到
存储适配器
的数组中,并在
onActivityResult
中调用
适配器.notifyDataSetChanged()
,就可以了

如果最终需要在应用程序会话之间持久保存此数据,则应在
CustomStoreActivity
onPause
方法中将
Store
对象写入
SharedReferences
(它是列表的保管者),而不是从各个方向触摸共享的首选项。如果需要,您可以在
onCreate
中再次读取列表

我知道通过/摘要解析需要很多,但它是Android中
Activity
结构之间传递数据和持久化数据的标准机制


如果您对实施有任何疑问,请告诉我,我会看看我能做些什么!:)

我觉得你好像在试图建立一个列表。请原谅我最初含糊不清的回答,但我保证它最终会集中在一点上

我对总体框架的建议是:

您有一个
活动
(可能是您的
CustomStoreActivity
),它显示保存的
存储
对象列表<代码>存储
需要实现
可打包
可序列化
(最好是前者)

在这个
活动中
有一个
新店
按钮(如果您遵循Android设计惯例,这可能是操作栏中的“+”按钮)

按下
newstore
按钮,您的
CustomStoreActivity
调用
startActivityForResult(CustomStoreEditActivity.class)

您的
CustomStoreActivity
按照您上次询问的答案执行
onActivityResult
。在这里,您将获得一个结果代码和一个
Intent
,其中包含
Extras
(由
Intent.getExtras()
检索)

您的
CustomStoreEditActivity
接受用户输入,如上所述,它不将其写入
SharedReferences
而是使用该信息创建一个新的
Store
对象,该对象包含所有信息,并使用
setResult(结果\确定,意图)
其中
intent
是添加了
存储
额外(作为
包裹
)的
intent

这意味着当
CustomStoreEditActivity
调用
finish()
时(您将执行此操作,而不是使用意图重新启动
CustomStoreActivity
,因为
CustomStoreActivity
已经在后面)您将获得对
onActivityResult
的调用,并可以将
存储
对象从
中拉出
    public void  onResume() {
    SharedPreferences prefs = getSharedPreferences("customtime", 0);
    String shopName = prefs.getString("shopName", "Empty");
    String shopTimeM1 = prefs.getString("Monday1", " ");
    String shopTimeM2 = prefs.getString("Monday2",  " ");
    String shopTimeT1 = prefs.getString("Monday1", " ");
    String shopTimeT2 = prefs.getString("Monday2",  " ");
    String shopTimeW1 = prefs.getString("Monday1", " ");
    String shopTimeW2 = prefs.getString("Monday2",  " ");
    String shopTimeTH1 = prefs.getString("Monday1", " ");
    String shopTimeTH2 = prefs.getString("Monday2",  " ");
    String shopTimeF1 = prefs.getString("Monday1", " ");
    String shopTimeF2 = prefs.getString("Monday2",  " ");
    String shopTimeS1 = prefs.getString("Monday1", " ");
    String shopTimeS2 = prefs.getString("Monday2",  " ");
    String shopTimeSU1 = prefs.getString("Monday1", " ");
    String shopTimeSU2 = prefs.getString("Monday2",  " ");
    String shopComments = prefs.getString("comments", "");

    TextView displayPrefs = (TextView) findViewById(R.id.displayPrefs);

    displayPrefs.setText(
            "------------------------------------------------------------" +
            "\n\nSHOP NAME: " + shopName +
            "\n\nTIMINGS: " + "\n\n  Monday: " + shopTimeM1 + " - " + shopTimeM2  +
            "\n  Tuesday: " + shopTimeT1 + " - " + shopTimeT2 + "\n  Wednesday: "
            + shopTimeW1 + " - " + shopTimeW2 + "\n  Thursday: " + shopTimeTH1 
            + " - " + shopTimeTH2 + "\n  Friday: " + shopTimeF1 + " - " + shopTimeF2 + 
            "\n  Saturday: " + shopTimeS1 + " - " + shopTimeS2 + "\n  Sunday: " +
            shopTimeSU1 + " - " + shopTimeSU2 +
            "\n\nCOMMENTS: " + shopComments +
            "\n\n------------------------------------------------------------");
    super.onResume();
}