Android Spinner不显示列表项

时间:2010-03-23 21:51:54

标签: android android-widget spinner

我想我现在发疯了。我正在尝试创建一个由数据表填充的微调器,但由于某种原因,下拉列表项文本未显示。我已经看了一遍,并看到其他帖子与人有同样的问题。谁能帮忙?

speciesList = (Spinner) findViewById(R.id.speciesList);
    spinnerCursor = nsfdb.fetchAllSpecies();
    startManagingCursor(spinnerCursor);
    //String []cArrayList = new String[]{"dog", "cat", "horse", "other"};
    String[] from = new String[]{"species"};

    int[] to = new int[]{R.id.text1};

    SimpleCursorAdapter locations = new SimpleCursorAdapter(this, R.layout.loc_row, spinnerCursor, from, to);

    locations.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    speciesList.setAdapter(locations);

微调器创建得很好,并且填充了4个项目,但每当我点击微调器时,我看到4个没有文本的项目,只有radiobuttons。如果我选择其中任何一个,我将获得正确的选定项目值,但没有显示任何数据。

5 个答案:

答案 0 :(得分:2)

当我尝试复制和粘贴代码以将ListView设置为Spinner时,我遇到了类似的问题。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.array.location, android.R.layout.simple_list_item_1);

需要更改为

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.array.location, android.R.layout.simple_spinner_item);

我会尝试检查R.layout.loc_row中的布局设置,以确保它对光标数据有意义。

答案 1 :(得分:1)

我遇到了同样的问题并且正在使用:int[] to = new int[]{ R.id.text1};我接受了 上述建议并将其更改为:int[] to = new int[]{ android.R.id.text1};

现在一切正常,谢谢!!

答案 2 :(得分:0)

fetchAllSpecies返回了哪些列?我相信你需要同时提供“_id”列和“种类”列。如果您只有一列,则可能正在使用该列,但它没有任何内容可用于文本。

我不确定这是否是您遇到的问题。我自己没有将微调器绑定到数据库查询。

答案 3 :(得分:0)

User300339

我有同样的问题。用户Qberticus给了我一个很好的指针。

基本上,当您在SimpleCursorAdapter locations中指定布局时,可以使用自定义布局R.layout.loc_row。后续调用setDropDownViewResource将继续使用相同的资源ID绑定。

您只需使用以下内容:

SimpleCursorAdapter locations = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, spinnerCursor, from, to);

locations.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

speciesList.setAdapter(locations);

这适用于我的代码。

BTW,对于数组,您可以改用它。

int[] to = new int[]{ android.R.id.text1};

详情请见 Android - Text dropdown/selection of Spinner does not show

答案 4 :(得分:0)

我先得到同样的错误。我用了

            ArrayAdapter adapter =  ArrayAdapter.createFromResource(getContext(),R.array.nitelik_array,android.R.layout.simple_spinner_item );
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 

我删除了&#34; simple_spinner_item&#34;然后重写了它。有用。我不知道为什么......