2016-01-04 105 views
1

我想使用gridview和imageview(在运行时)使用毕加索加载图像作为网格。该代码与无法启动失败活动ComponentInfo {com.dbprox.tagpic/com.dbprox.tagpic.ImageGallaryPicasso}:显示java.lang.NullPointerException与毕加索的网格视图无法加载图像

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

您没有在适配器内初始化imageview并尝试使用它。 – karimkhan

+0

你可以发布命令请 –

+0

只需在convertview初始化ImageView后的getview方法中添加这个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; 
    }