我創建了一個自定義ListView適配器/項目。該項目包含一個CheckedTextView和一個TextView。在我的自定義ListView項目上,爲什麼(string.length()<= 0)總是爲true,而(string ==「」)總是爲false?
在適配器的getView()方法中,自定義項目被創建並且它的setTask(Task)方法在返回之前被調用。
setTask(Task)方法獲取2個字符串以及作爲參數傳入的Task對象的布爾值。 (我知道它的地址實際上是通過的。)
其中一個字符串被分配給自定義項目的TextView的文本屬性,如果該字符串包含文本。否則,TextView的可見屬性將設置爲「不存在」。
爲了做出這個決定,我檢查是否字符串的長度小於或等於0 ...它會產生意外的行爲 - 它總是評估真實。
如果我改變它來檢查字符串是否等於「」,它總是返回false。
這使我相信我檢查的字符串爲空。爲什麼會這樣?
protected void onFinishInflate() {
super.onFinishInflate();
checkbox = (CheckedTextView)findViewById(android.R.id.text1);
description = (TextView)findViewById(R.id.description);
}
public void setTask(Task t) {
task = t;
checkbox.setText(t.getName());
checkbox.setChecked(t.isComplete());
if (t.getDescription().length() <= 0)
description.setVisibility(GONE);
else
description.setText(t.getDescription());
}
而這裏的適配器中getView()方法:
public View getView(int position, View convertView, ViewGroup parent) {
TaskListItem tli;
if (convertView == null)
tli = (TaskListItem)View.inflate(context, R.layout.task_list_item, null);
else
tli = (TaskListItem)convertView;
tli.setTask(currentTasks.get(position));
return tli;
}
你的問題是一個典型的教室案例。 –
@保守的怪胎原諒我 - 我是Stack Overflow的新手。這是否意味着它不夠先進?我在這裏做了些什麼皺眉嗎?我現在不在Java課程,從來沒有過,但我是初學者。 – derrik
不,不,完全沒有。說這是一個典型的教室案例,意味着你徹底理解這個案例非常重要。由於對這種情況的理解奠定了您對Java編程語言(以及C#)的理解的基礎。 –