在微调器中看不到所选选项

时间:2014-01-02 05:12:30

标签: java android

我使用了一个带有来自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); 

2 个答案:

答案 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()上设置数据。