【发布时间】:2011-06-23 20:38:14
【问题描述】:
我创建了一个自定义 ListView 适配器/项目。该项目包含一个 CheckedTextView 和一个 TextView。
在适配器的 getView() 方法中,创建了自定义项,并在返回之前调用了它的 setTask(Task) 方法。
setTask(Task) 方法从作为参数传入的 Task 对象中获取 2 个字符串和一个布尔值。 (我确实认识到它的地址实际上是被传递的。)
如果该字符串包含文本,则将其中一个字符串分配给自定义项的 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;
}
【问题讨论】:
-
你的问题是典型的课堂案例。
-
@Blessed Geek 原谅我 - 我是 Stack Overflow 的新手。这是否意味着它还不够先进,无法问?我在这附近做了什么不受欢迎的事情吗?我现在没有上 Java 课程,也从来没有上过,但我是初学者。
-
不,不,一点也不。说它是一个典型的课堂案例,意味着你对这个案例的透彻理解是非常重要的。因为对本案例的理解为您理解 Java 编程语言(以及 C#)奠定了基础。