我有活动 - StartupActivity 和 MainActivity 。
在StartupActivity中,我在表中插入一些数据,并使用intent来启动MainActivity。
StartupActivity 中的代码:
db.addFriend("userNameTest"); //db is a DataBase handler class and has been initialized inside onCreate()
Intent home = new Intent(StartUp.this, MainActivity.class);
startActivity(home);
finish();
数据插入成功,我可以在数据库表中看到它们。此外,MainActivity正在正常启动。
在MainActivity中我正在从表中检索数据并在微调器中显示。
MainActivity 的onCreate方法中的代码:
List<String> list = db.getFriends();
dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
friendSpinner.setAdapter(dataAdapter);
friendSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id)
{ String frnd_name = (String)dataAdapter.getItem(position); }
@Override
public void onNothingSelected(AdapterView<?> adapter) { }
});
Spinner第一次没有显示任何数据,但是如果我按下后退按钮而不是再次导航回活动,它会在微调器中显示数据。另外,它只在安装时首次运行时显示数据;之后,每次运行都会显示数据。
这可能是什么原因?请帮帮我。
另一件事也会有所帮助。如果我在表中添加一些数据,然后尝试刷新微调器或微调器本身的dataAdapter。我怎么会这样做?现在,我只是再次使用上面的代码;因为我已经尝试过dataAdapter.notifyDataSetChanged(); - 这是没有用的。
答案 0 :(得分:0)
变化:
dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, list);
要:
dataAdapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_spinner_item, list);
答案 1 :(得分:0)
可能是这样的,因为从db获取该列表可能需要一段时间,您的应用程序可以直接转到您声明dataAdapter的下一行代码。
您可以尝试使用AsyncTask。这样的事情应该会有所帮助;
`class GetList extends AsyncTask<String, Void, List<String>> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Getting List...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected List<String> doInBackground(String... args) {
List<String> list = db.getFriends();
...
return list;
}
@Override
protected void onPostExecute(List<String> result) {
pDialog.dismiss();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
friendSpinner.setAdapter(dataAdapter);
}
}`
在onCreate()方法中;
`GetList getList = new GetList();
getList.execute();`
希望这有帮助。