我试图用从网上加载的拇指图像来构建gridview。 我所拥有的是一个url数组,然后传递给一个适配器customgrid(代码如下)。 位图的下载是通过异步任务完成的。 最终的结果是,在15个图像中,只有2个实际显示,其他13个不显示(但它们都存在,并且我尝试了所有这些都使用相同的URL,这仍然会发生。 。 Android gridview与来自网址的图像
有任何被抛出任何错误 任何帮助,将不胜感激
CustomGrid.Java类:。
public class CustomGrid extends BaseAdapter{
private Context mContext;
private final String[] web;
private final String[] ImageUrl;
ImageView imageView;
Bitmap bitmap;
public CustomGrid(Context c,String[] web,String[] ImageUrl) {
mContext = c;
this.ImageUrl = ImageUrl;
this.web = web;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return web.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View grid;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
grid = new View(mContext);
grid = inflater.inflate(R.layout.gallery_item, null);
imageView = (ImageView)grid.findViewById(R.id.grid_image);
try
{
new LoadImage().execute(ImageUrl[position]);
}catch (Exception e) {
e.printStackTrace();
}
} else {
grid = (View) convertView;
}
return grid;
}
private class LoadImage extends AsyncTask<String, String, Bitmap> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected Bitmap doInBackground(String... args) {
try {
bitmap = BitmapFactory.decodeStream((InputStream)new URL(args[0]).getContent());
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
protected void onPostExecute(Bitmap image) {
if(image != null){
imageView.setImageBitmap(image);
}else{
}
}
}
}
主要活动ç加载图像颂歌:(网络仅仅是串并的ImageUrl数组与URL的图像阵列)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getLayoutInflater().inflate(R.layout.activity_trips_and_activities, frameLayout);
CustomGrid adapter = new CustomGrid(TripsAndActivities.this, web, imageUrl);
grid=(GridView)findViewById(R.id.grid);
grid.setAdapter(adapter);
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(TripsAndActivities.this, "You Clicked at " + web[+position], Toast.LENGTH_SHORT).show();
}
});
}
匆匆一瞥,我会说你的'GetView'在else部分是错误的。如果视图不为空(您应该设置图像或其他位置),则不设置任何内容。不是说它会解决你所有的问题,但也许是一个。 – Johan
另外,你在哪里设置'imageView'的图像? – Johan
谢谢,但这不会是一个问题。该位代码实际上从未被命中,并且该位与新的LoadImage()。execute(ImageUrl [position]); 被称为15次(这是我试图加载的图像数量)。 –