2011-07-12 14 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のnullポインタ例外が

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(私は信じて)、例外がスローされた行番号を表します。どの変数がnullになる候補であるかを特定する必要があります。可能であれば、なぜそれがnullであるのかを確認するために、デバッグしてそこにブレークポイントを配置することもできます。 – aardvarkk

+0

'ViewHolder holder'にタイプミスがありますか?変数は' myHolder'でなければならないと思います – Balanivash

答えて

0

あなたがここに貼り付けているコードに問題があるようです。コードを見て、私はあなたがもし条件でnewを使用してインスタンスを作成して、

ViewHolder holder; 

が実際にその場合

ViewHolder myHolder; 

する必要がありますと仮定しますが、elseで、それが行われていません。したがって、myHoldernullを指しています。これが理由だと思ってくださいNullPointerException

+0

私はそれを置き換えますが、まだエラーが発生します – user642347

0

あなたはこのメソッドに渡すものを知っていますか?このメソッドをposition == 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