ALL,應用程序的奇怪崩潰
我遇到了非常奇怪的Android應用程序崩潰。 這裏是代碼:
@Override
public View getView(int position, View convert, ViewGroup parent)
{
View row = convert;
ImageView image = null;
TextView name = null, price = null;
if(row == null)
{
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(resource, parent, false);
image = (ImageView) row.findViewById(R.id.product_picture);
name = (TextView) row.findViewById(R.id.product_name);
price = (TextView) row.findViewById(R.id.product_price);
row.setTag(products.get(position));
}
Product product = products.get(position);
name.setText(product.getProduct_name());
image.setImageBitmap(product.getProduct_picture());
price.setText(String.valueOf(product.getProduct_price()));
return row;
}
此列表視圖有3行。前兩個是可見的,沒有問題。但是,當我嘗試滾動顯示第三行程序崩潰與行「name.setText(...);」NULL指針異常「
我在我的HTC手機上運行,而不是模擬器。
有沒有人經歷過這樣的事情?你如何調試和修復它?或者,也許它是一個指示手機壞了?
謝謝。
很明顯,代碼需要更改,但是您能否詳細說明爲什麼/需要更改,以便OP瞭解錯誤? – codeMagic
當然。列表視圖在滾動而不是創建新視圖時重用您的行視圖。在這種情況下,您的「convert」不會爲空,並且您不會運行「name =(TextView)row.findViewById(R.id.product_name)」,並且「name」將保留爲空。所以,當你的信將嘗試設置文本的名字,你會得到NullReference – Dimmerg
這更好,但它會更有幫助,如果你更新你的答案與解釋。它只是讓OP和其他人更容易閱讀和理解問題,以及爲什麼這會解決問題。代碼只回答一般皺眉:( – codeMagic