我是Android和Java的新手,但我一直尝试这样做一段时间并且有一些想法如何工作,但我不知道如何把它放在代码中。
我有两个活动,一个是Log,另一个是创建新日志。基本上,当用户创建新日志并将其保存时,它将保存为键集,其中键为日志名称。
然后我想获取新创建的Log条目并将其添加到另一个Activity上的列表中。
我似乎只能使用所有KeySet填充列表中的第一个项目,而不是通过添加为新项目逐个列出它们。
我需要的代码就是将ListView中的每个项目填充为KeySet中的一个Key,当用户点击它时,它会加载值。
我在ActivityLog中的代码:
public void loadLog (View view){
SharedPreferences userInfo = getSharedPreferences("userData", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = userInfo.edit();
String myString = userInfo.getAll().keySet().toString();
String[] values = new String[] { myString
};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, android.R.id.text1 );
Map<String, ?> allEntries = userInfo.getAll();
for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
Log.d("map values", entry.getKey() + ": " + entry.getValue().toString());
listView.setAdapter(adapter);
}}
ActivityNewLog代码:
public void saveLog (View view){
EditText Date = (EditText)findViewById(R.id.editDate);
EditText Name = (EditText)findViewById(R.id.editName);
EditText Cal = (EditText)findViewById(R.id.editCal);
EditText STime = (EditText)findViewById(R.id.editSTime);
EditText ETime = (EditText)findViewById(R.id.editETime);
EditText Entry = (EditText)findViewById(R.id.editEntry);
try {
SharedPreferences userInfo = getSharedPreferences("userData", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = userInfo.edit();
Set<String> LogSet = new HashSet<String>();
LogSet.add(Date.getText().toString());
LogSet.add(Name.getText().toString());
LogSet.add(Cal.getText().toString());
LogSet.add(STime.getText().toString());
LogSet.add(ETime.getText().toString());
editor.putStringSet( Entry.getText().toString(), LogSet);
editor.commit();
Context context = getApplicationContext();
CharSequence text = "User data saved!";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
catch(Exception ex) {
// insert your own error message here
}
}
感谢您提供任何改进此代码的帮助或建议。
答案 0 :(得分:0)
我建议你使用SQLite数据库,但是在这里你把一个密钥放到SharedPreferences
/ HashMap
。
editor.putStringSet( Entry.getText().toString(), LogSet);
现在,你必须重新获得这个价值......
Map<String, ?> allEntries = userInfo.getAll();
Set<String> entry = allEntries.get("<some value here>"); // <-- Whatever you put in
当你拥有它时,你可以循环它们以添加到适配器。
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, android.R.id.text1 );
listView.setAdapter(adapter);
for (String s : entry) {
adapter.add(s);
}