gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:21 25 4
gpt4 key购买 nike

我尝试制作一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com