android - 每个项目具有不同 View 的微调器

标签 android spinner

我尝试制作一个 Spinner,其中下拉 View 中的第一项没有单选按钮。我覆盖了 arrayadapter 的 View 类型,以确保微调器中有两个不同的 View ,并且这些 View 不会被错误的项目回收。然后我覆盖 arrayadapter 的 getDropDownView 以从第一项中删除单选按钮。这是有效的,但所选项目不显示单选按钮。我想我不必设置 CheckMarkDrawable(android.R.drawable.btn_radio),因为它应该一直存在,但事实并非如此。有任何想法吗?谢谢!

        @Override
        public int getViewTypeCount()
        {
            return 2;
        }

        @Override
        public int getItemViewType(int position)
        {
            if (position == 0)
                return 0;
            else
                return 1;
        }

        @Override
        public View getDropDownView(int position, View convertView, android.view.ViewGroup parent)
        {
            if (position == 0)
            {
                View vw = super.getDropDownView(position, convertView, parent);
                CheckedTextView tv = (CheckedTextView) vw;
                if (tv != null)
                {
                    tv.setCheckMarkDrawable(null);
                    tv.setTextColor(Color.GRAY);
                    return tv;
                }
                return vw;
            } else
            { 
                View vw = super.getDropDownView(position, convertView, parent);
                CheckedTextView tv = (CheckedTextView) vw;
                if (tv != null)
                {
                    tv.setCheckMarkDrawable(android.R.drawable.btn_radio);
                    tv.setTextColor(Color.BLACK);
                    return tv;
                }
                return vw;
            }
        }

最佳答案

我也遇到了同样的问题。是的,正如 pzagor2 所说 - Spinner 不支持下拉列表 (getDropDownView) 的多布局回收。它只是不调用 getViewTypeCount 和 getItemViewType。这是一个问题 - #17128 .

但它仍然为 getView 调用这些方法,用于显示当前微调器项和检测微调器宽度。

解决方法:您可以只检查提供的 convertView 是否具有正确的类型,如果不正确则不要使用它。它在某些情况下会有所帮助,例如,当您有两种类型并且一种类型的使用频率低于另一种时。

关于android - 每个项目具有不同 View 的微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885703/

相关文章:

android - 是否可以检测到 Android 设备上的 USB 调试?

java - 不能在静态上下文 android spinner 中使用它

android - 如何使用微调器 setOnItemLongClickListener

android - 微调器的文本大小

android - Marquee 在微调器 Android 中不工作

javascript - Bootstrap数字输入旋转器不会停止旋转

android - 使用安卓 Material 芯片

android - android 中的 html5 Canvas

android - 如何像在 android webview 中确认一样处理 facebook

安卓设计 : background long running service or AlarmManager?