我使用了一个带有来自sqllite数据库的动态数据检索的微调器,我能够填充这些值,而不是当我从中选择它没有显示它时。
这是我的代码:
final Spinner defects = (Spinner) findViewById(R.id.defects);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, list);
defects.setAdapter(adapter1);
答案 0 :(得分:0)
您可以从光标中获取数据并执行以下操作:
defects.setSelection(//position of the selected string);
在onCreate()
中调用此函数,以便在活动加载时,如果数据库中有条目,则可以将以下值加载到微调器中。在微调器的情况下,所有数据都有位置。因此,在您的情况下,您可以执行以下操作:
从数据库中获取字符串,并使用以下函数:
public int getpositionof_spinner(String name){
int index = 0;
String[] statuslist = getResources().getStringArray(R.array.yourspinnerarray);
for (String string : statuslist) {
if(string.equalsIgnoreCase(name)){
return index;
}
index++;
}
return 0;
}
所以,最后你最终会得到:
defects.setSelection(getpositionof_spinner("value"));
您可以创建一个populate()
函数,您可以在其中预填充数据库中的内容并在应用的onCreate()
上调用它们,以便于实施。
对于查询,您可以执行以下操作:
public Cursor getContacts(String spinner) {
String where = KEY_SPINNER + " = '" + spinner + "'";
Cursor c = db.query(true, TABLE_NAME, ALL_KEYS_TO_DATABASE, where, null,
null, null, null, null);
if (c != null) {
c.moveToFirst();
}
return c;
}
答案 1 :(得分:0)
您可以使用AsyncTask类从数据库中获取数据。在doInBackground(...)中获取数据并在onPostExecute()上设置数据。