Исключение нулевого указателя Java, когда я передаю эти три параметра в ленивый класс загрузки - PullRequest
0 голосов
/ 12 июля 2011
@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;
    }

Ошибка:

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

Ответы [ 3 ]

1 голос
/ 12 июля 2011

Этот код вы объявляете,

 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 голосов
/ 12 июля 2011

Мое предположение без номеров строк и / или знания того, что вы передаете этому методу ... если вы попытаетесь вызвать этот метод с position == null, то он выдаст NPE, потому что вы передаете ноль в примитив ,

0 голосов
/ 12 июля 2011

Кажется, проблема в коде, который вы вставили сюда. Видя код я предполагаю

  ViewHolder holder;

на самом деле должно быть

  ViewHolder myHolder;

В этом случае вы создали экземпляр, используя new в условии if, но в else это не сделано. Итак, myHolder указывает на null. Думаю, в этом причина NullPointerException

...