【问题标题】:Android Spinner not displaying list itemsAndroid Spinner 不显示列表项
【发布时间】:2016-05-18 21:45:02
【问题描述】:

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

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

【问题讨论】:

    标签: android android-widget spinner


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,正在使用:int[] to = new int[]{ R.id.text1}; 我拿了 上面的建议改成:int[] to = new int[]{ android.R.id.text1};

      现在一切正常,谢谢!!

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 返回的列是_id和species。我能够从每一列中获取值,但文本只是没有显示在 simple_spinner_dropdown_item 中。如果我单击微调器并选择其中一个空白行,则下拉列表将消失,我将返回查看我的应用程序,微调器上的值显示正确的选定值。这是一种非常奇怪的行为。
        【解决方案4】:

        用户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 - Text dropdown/selection of Spinner does not show

        【讨论】:

          【解决方案5】:

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

                      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”,然后重写了它。有用。不知道为什么。。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-04-03
            • 2017-05-31
            • 1970-01-01
            • 1970-01-01
            • 2017-02-17
            • 1970-01-01
            • 2016-10-31
            相关资源
            最近更新 更多