1
使用“ViewHolder”类时出现问题。我使用“ViewHolder”来改善我的列表显示语音。我认为代码没问题,但是为什么当“setText”与来自“Cursor”的数据抛出异常时。我的代码在这里:Android中的“ViewHolder”类的问题
if(row==null){
LayoutInflater inflater = LayoutInflater.from(context);
row = inflater.inflate(R.layout.sbooks_row, null);
holder = new ViewHolder();
holder.id = (TextView)row.findViewById(R.id.id);
holder.title = (TextView)row.findViewById(R.id.title);
holder.icon = (ImageView)row.findViewById(R.id.icon);
row.setTag(holder);
}
else
{
holder = (ViewHolder)row.getTag();
}
holder.title.setText(cursor.getString(cursor.getColumnIndex(SBooksDbAdapter.KEY_TITLE)));
holder.id.setText(cursor.getString(cursor.getColumnIndex(SBooksDbAdapter.KEY_ROWID)));
我的代码运行一切正常无“ViewHolder”,但是当我编辑的代码,以用于“ViewHolder”它抛出异常。所以,第一,秒可能不是这种情况。那么第三呢?你能解释清楚吗?我不明白“创建没有持有者的行”? – Dennie 2009-08-26 05:31:05
再一次,你没有说过什么是例外,所以你迫使我继续猜测。一个猜测是它是一个NullPointerException。有一件事可能是空的是你的持有者局部变量。如果你有一些getTag()返回null的行,它将为null。如果您从未在该行上调用setTag(),getTag()将返回null。这就是我所说的“创建没有持有者的行”。 – CommonsWare 2009-08-26 15:20:43
对不起,你的猜测正是如此。当我调试我的代码它“说”NullPointerException。如果你向我展示一些取决于我上面的代码的代码片段,这很有帮助。无论如何,我会检查它,谢谢! – Dennie 2009-08-27 07:23:35