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