1

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

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 个没有文本的项目,只有单选按钮。如果我选择其中任何一个,我将获得正确的选定项目值,但没有显示任何数据。

4

5 回答 5

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 中的布局设置,以确保它对光标数据有意义。

于 2010-06-09T16:06:10.240 回答
1

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

现在一切正常,谢谢!!

于 2011-04-04T23:50:13.637 回答
0

fetchAllSpecies 返回哪些列?我相信您需要同时存在“_id”列和“species”列。如果您只有一列,它可能会将其用于 id,但它没有用于文本。

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

于 2010-03-24T19:54:46.487 回答
0

用户300339

我遇到过同样的问题。用户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);

这适用于我的代码。

顺便说一句,对于to数组,您可以改用它。

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

请参阅 Android 的详细信息 - Spinner 的文本下拉/选择不显示

于 2010-06-19T13:21:37.170 回答
0

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

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

我删除了“simple_spinner_item”,然后重写了它。有用。我不知道为什么。。

于 2016-05-18T07:49:32.403 回答