有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Selected选项在微调器中不可见

我使用了一个微调器从sqllite数据库进行动态数据检索,我能够填充值,而不是当我从中选择某个内容时,它不会显示这些内容

这是我的代码:

final Spinner defects = (Spinner) findViewById(R.id.defects); 
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,安卓.R.layout.simple_spinner_item, list);
defects.setAdapter(adapter1); 

共 (2) 个答案

  1. # 1 楼答案

    可以使用AsyncTask类从数据库获取数据。在doInBackground(…)在onPostExecute()上获取数据并设置数据

  2. # 2 楼答案

    您可以从光标获取数据并执行以下操作:

    defects.setSelection(//position of the selected string);
    

    onCreate()中调用此函数,以便在每次加载活动时,如果数据库中有条目,可以将以下值加载到微调器中。在spinner的情况下,所有数据都有一个位置。因此,在您的情况下,您可以执行以下操作:

    从数据库中获取字符串,并使用以下函数:

    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;
    }