2016-01-04 2 views
1

Я пытаюсь загрузить изображения в виде сетки, используя gridview и imageview (во время выполнения), используя picasso. Код не удается с Невозможно запустить активность ComponentInfo {com.dbprox.tagpic/com.dbprox.tagpic.ImageGallaryPicasso}: java.lang.NullPointerExceptionСетка с Picasso не загружает изображения

package com.dbprox.tagpic; 
 

 
import android.app.Activity; 
 
import android.content.Context; 
 
import android.os.Bundle; 
 
import android.os.Environment; 
 
import android.view.LayoutInflater; 
 
import android.view.View; 
 
import android.view.ViewGroup; 
 
import android.widget.ArrayAdapter; 
 
import android.widget.GridView; 
 
import android.widget.ImageView; 
 

 
import com.squareup.picasso.Picasso; 
 

 
import java.io.File; 
 
import java.util.ArrayList; 
 

 
public class ImageGallaryPicasso extends Activity { 
 

 
    ArrayList<String> stringArrayList = new ArrayList<String>(); 
 
    String path= Environment.getExternalStorageDirectory().toString()+"/Pictures"; 
 
    File f=new File(path); 
 
    File file[]=f.listFiles(); 
 

 
    String [] stringArray = stringArrayList.toArray(new String[stringArrayList.size()]); 
 

 

 

 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_image_gallary_picasso); 
 

 
     for (int i = 0; i < file.length; i++) { 
 

 
      stringArrayList.add(file[i].getAbsolutePath()); 
 

 
     } 
 
     GridView gridview = (GridView) findViewById(R.id.imagegridview); 
 
     //LoadPicassaImages(); 
 

 
      gridview.setAdapter(new ImageListAdapter(this, stringArray)); 
 

 

 

 
    } 
 

 
    class ImageListAdapter extends ArrayAdapter { 
 

 

 
     private Context context; 
 
     private LayoutInflater inflater; 
 

 
     private String[] imageUrls; 
 

 

 

 

 
     public ImageListAdapter(Context context, String[] imageUrls) { 
 
      super(context, R.layout.activity_image_gallary_picasso, imageUrls); 
 

 
      this.context = context; 
 
      this.imageUrls = imageUrls; 
 

 
      inflater = LayoutInflater.from(context); 
 
     } 
 

 
     @Override 
 
     public View getView(int position, View convertView, ViewGroup parent) { 
 

 

 
      if (null == convertView) { 
 
       convertView = inflater.inflate(R.layout.activity_image_gallary_picasso, parent, false); 
 
      } 
 

 

 

 
      Picasso 
 
        .with(context) 
 
        .load(imageUrls[position]) 
 
        .fit() // will explain later 
 
        .into((ImageView) convertView); 
 

 
      return convertView; 
 
     } 
 
    } 
 

 
}

+0

Вы не инициализировали изображение в своем адаптере и не пытались его использовать. – karimkhan

+0

можете ли вы отправить команду, пожалуйста, –

+0

просто добавьте это в свой метод getview после инициализации конвертирования ImageView imageView = (ImageView) convertView.findViewById (R.id.your_imageview); – karimkhan

ответ

1

Попробуйте этот код в ваш адаптер ,

ViewHolder viewHolder; 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     if (null == convertView) { 
      convertView = inflater.inflate(R.layout.activity_image_gallary_picasso, parent, false); 
      viewHolder = new ViewHolder(); 
      viewHolder.imageView = (ImageView) convertView.findViewById(R.id.your_imageview); 
      convertView.setTag(viewHolder); 
     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     Picasso.with(context) 
       .load(imageUrls[position]) 
       .fit() // will explain later 
       .into(viewHolder.imageView); 

     return convertView; 
    } 

    public class ViewHolder{ 
     ImageView imageView; 
    } 
Смежные вопросы