我正在创建自定义适配器并使用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;
}
答案 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的适配器中显示实际数据。确保这是你想要做的或在第一个位置插入一个虚拟数据。支持数据阵列。