2015-03-13 97 views
0

我有gridview,必须下载图像到gridview。当我打开应用程序时,我看不到任何图像,但我认为我的代码是正确的。如何解决它? 我在适配器使用此代码:GridView图像未加载

// create a new ImageView for each item referenced by the Adapter 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { // if it's not recycled, initialize some attributes 
     //float wd = 250/Resources.getSystem().getDisplayMetrics().density; 
     //float hg = 300/Resources.getSystem().getDisplayMetrics().density; 
     int pxwd = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 90, Resources.getSystem().getDisplayMetrics()); 
     int pxhg = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 120, Resources.getSystem().getDisplayMetrics()); 
     imageView = new ImageView(context); 
     imageView.setLayoutParams(new GridView.LayoutParams(pxwd, pxhg)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(8, 8, 8, 8); 
    } else { 
     imageView = (ImageView) convertView; 
    } 
    imageView.setImageDrawable(LoadImageFromURL(GridViewConfig.getImage_list().get(position))); 
    return imageView; 
} 


// references to our images 
private Drawable LoadImageFromURL(String url) 
{ 
    try { 
     InputStream is = (InputStream) new URL(url).getContent(); 
     return Drawable.createFromStream(is, "src"); 
    } catch (Exception e) { 
     return null; 
    } 
} 

这里是URL列表:

public class GridViewConfig { 
public static ArrayList<String> image_listGrid = new ArrayList<String>(); 

public static ArrayList<String> getImage_list() { 
    return image_listGrid; 
} 

public static void setImage_list(ArrayList<String> image_list) { 
    GridViewConfig.image_listGrid = image_list; 
} 

public static void addImageUrls(){ 
    image_listGrid.add("someimage.jpg"); 
} 

但问题是,没有图像显示在我的GridView控件。

+0

您能否首先确认图片是否正在下载 – Fahim 2015-03-13 10:04:37

+0

使用picasso加载您的图片 – 2015-03-13 11:18:25

回答

0

在你getView(...),你应该使用TypedValue.COMPLEX_UNIT_DIP取代TypedValue.COMPLEX_UNIT_SP

int pxwd = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 90, Resources.getSystem().getDisplayMetrics()); 
int pxhg = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 120, Resources.getSystem().getDisplayMetrics()); 

希望这有助于!

+0

不,这不是一个解决方案。它不关系DIP或SP。 – Werasu 2015-03-13 10:05:48

+0

你试过了吗? – Xcihnegn 2015-03-13 10:08:03

+0

是的,我有。没有什么改变。 – Werasu 2015-03-13 10:14:16