Android Spinner getView

时间:2013-12-09 02:49:01

标签: java android

我正在创建自定义适配器并使用getView方法尝试仅显示ONCE的默认文本。现在我遇到了一个问题,当我单击列表中的第一个项目时,会保留默认文本,但是不能保留其他任何项目?有什么建议吗?

谢谢! (我的代码有点乱,因为我只是想调试)

boolean firstTime = true;

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    if (firstTime) {
        firstTime = false;
        TextView firstView = new TextView(ForgotPasswordActivity.this);
        firstView.setText("Please select School");
        return firstView;
    }
    TextView view = new TextView(ForgotPasswordActivity.this);
    view.setText("Hello");
    return view;
}

2 个答案:

答案 0 :(得分:2)

您必须使用getCount函数:

@Override
public int getCount() {
    return super.getCount() -1; // This makes the trick;
}

此技巧不会显示您在微调器内添加的最后一项(因此,当您在微调器内添加文本时,添加将不会在微调器中显示的文本,并且它将显示为单击微调器之前的默认值。

祝你好运

答案 1 :(得分:0)

我不确定你要做什么,但你可以通过检查位置是否来强制顶行始终显示选择消息。另请注意下面的代码中我重复使用如果它不是null,则为convertView。如果可用,则重用convertView比每次重新创建新视图更快。

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if(convertView == null) {
            convertView = new TextView(ForgotPasswordActivity.this);
        }

        if(position == 0) {
            convertView.setText("Please select School");
        } else {
            convertView.setText("Hello");
        }

        return convertView;

    }

还要记住,通过强制位置零显示选择消息,你没有在位置0的适配器中显示实际数据。确保这是你想要做的或在第一个位置插入一个虚拟数据。支持数据阵列。