*解决方案*
这可能不是一个完美的解决方案,但绝对适合我:)
更新load()
private void load() {
if (helper.getResults(c).equals("Yes")) {
spinner.setSelection(0);
} else if (helper.getResults(c).equals("No")) {
spinner.setSelection(1);
}
}
结果=您声明的助手
"是" /"否" =你的选择
0 =是
1 =否
根据您的需求进行更新
*更新*
我实际上将选定的微调器存储到一个EditText中,然后选定的微调器将捕获值到EditText。 但是,当我想再次编辑数据库时,而不是显示"否"在EditText和Spinner值中,它显示" Yes"在EditText和Spinner Value中。
我使用Spinner获取值(是和否)并保存到SQLite数据库。' 按下保存按钮后,所选微调器的值将保存到字符串中。
但是当用户选择&#34; no&#34;时,当我尝试更改数据时,会保存其他值(edittext),但Spinner值会跳回到&#34;是&#34;。< / p>
我希望如果用户选择&#34; no&#34;,当他想要编辑数据库时,它仍会显示&#34; no&#34;
@覆盖 public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.results);
spinner = (Spinner) findViewById(R.id.spinner);
text = (EditText) findViewById(R.id.categoryET);
list = new ArrayList<String>();
list.add("Yes");
list.add("No");
ArrayAdapter<String> adp = new ArrayAdapter<String>
(this, android.R.layout.simple_spinner_dropdown_item, list);
adp.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
mMyPrefs = PreferenceManager.getDefaultSharedPreferences(this);
mMyEdit = mMyPrefs.edit();
spinner.setAdapter(adp);
int selectedPosition = mMyPrefs.getInt("selected_position", 0) ;
text.setText(list.get(selectedPosition));
spinner.setSelection(selectedPosition);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch(position) {
case 0 :
text.setText("Yes");
break;
case 1 :
text.setText("No");
break;
default :
text.setText("Nothing");
break;
}
Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + "", Toast.LENGTH_SHORT).show();
mMyEdit.putInt("selected_position", spinner.getSelectedItemPosition());
mMyEdit.commit();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
答案 0 :(得分:0)
我将假设您在onStart()
重新参加活动,如果您正在做不同的事情,只需切换onStart()
以获取相应的条目点。
您必须跟踪上次使用的变量,并将其作为onStart()
中的设置值传递给微调器。
您可以使用几个选项来存储上次使用的变量,它们取决于您希望设置的生存时间。最简单的是每个应用程序运行,您可以通过将微调器值设置为text
中的onStart()
变量来实现此目的。
其他选项是多次运行应用程序的持久性,即使这样,您也有几个选项。最明显的是使用sqlite,因为你已经是,并且希望对它有经验。您可以简单地为上次使用的变量添加数据库条目,并在onStart()
中读取它。
其他选项包括在内部/外部存储设备上创建文件,Android SharedPreferences以及其他列出here的文件。
答案 1 :(得分:0)
你可以这样做:
private SharedPreferences mMyPrefs;
private Editor mMyEdit;
on onCreate():
mMyPrefs = PreferenceManager.getDefaultSharedPreferences(this);
mMyEdit = mMyPrefs.edit();
ArrayAdapter<String> adp = new ArrayAdapter<String>
(this, android.R.layout.simple_spinner_dropdown_item, list);
adp.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(adp);
int selectedPosition = mMyPrefs.getInt("selected_position", 0) ;
your_edittext.setText(list.get(selectedPosition));
spinner.setSelection(selectedPosition);
setOnItemSelectedListener():
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
mMyEdit.putInt("selected_position", spinner.getSelectedItemPosition());
mMyEdit.commit();
// Other stuff
}
希望它会对你有所帮助。