2011-07-12 199 views
0
@Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     ViewHolder holder; 
     if(convertView == null) 
     { 
      convertView = inflater.inflate(R.layout.photodata,null); 

      myHolder = new ViewHolder(); 
      try 
      { 
       myHolder.imgPhoto = (ImageView) convertView.findViewById(R.id.imgPhoto);    
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 
      convertView.setTag(myHolder); 
     } 
     else 
     { 
      myHolder = (ViewHolder)convertView.getTag(); 
     } 
     System.out.println("String image is" + getItem(position).photo); 
     myHolder.imgPhoto.setTag(getItem(position).photo); 
     System.out.println("String image is" + getItem(position).photo); 
     imageLoader.DisplayImage(getItem(position).photo,activity, myHolder.imgPhoto); 

     return convertView; 
    } 

錯誤:的Java空指針異常

FATAL EXCEPTION: main 
java.lang.NullPointerException 
at.com.android.adapter.PhotoAdater.getView(PhotoAdater.java:59) 
at.android.widget.AbsListView.obtainView(AbsListView.java:1315) 
+0

59代表(我相信)的行號引發異常。它應該確定哪些變量是候選者爲空。您也可以嘗試調試並在其中放置斷點,以驗證爲什麼它可能爲空。 – aardvarkk

+0

在'ViewHolder持有人'中是否有拼寫錯誤,認爲該變量必須是'myHolder' – Balanivash

回答

0

似乎是在你已經粘貼在這裏的代碼有問題。眼看代碼我假設

ViewHolder holder; 

實際上應該是

ViewHolder myHolder; 

在這種情況下,您在if條件創建使用new實例,但在else,它沒有這樣做。所以,myHolder指向null。認爲這是爲什麼NullPointerException

+0

我將取代,但仍然收到錯誤 – user642347

0

我的猜測沒有行號和/或知道你傳遞給這個方法...如果你試圖調用這個方法的位置== null,那麼它會拋出一個NPE因爲你將null傳遞給一個原語。

1

此代碼您聲明,

ViewHolder holder; 

,但使用的是不同的對象,

myHolder.imgPhoto= (ImageView) convertView.findViewById(R.id.imgPhoto); 

變化,

holder.imgPhoto= (ImageView) convertView.findViewById(R.id.imgPhoto); 

,改變Layoutinflater這樣,

convertView = inflater.inflate(R.layout.photodata,null,false);

此代碼減少錯誤

+0

我是變更持有人而不是myHolder,但仍然出現該錯誤 – user642347