我使用毕加索来加载几张从网络服务中解析出来的图片...问题是我有多个项目,但只下载了最后一项并加载到所需的视图中...这里&#39 ;我的代码的一部分,处理填充项目:
public void populate_jobs(ArrayList<RowItem> jobs)
{
LinearLayout ll_parent = (LinearLayout) findViewById(R.id.list_container);
for(int i = 0;i < jobs.size();i+=3)
{
RowItem item_first = jobs.get(i);
_items.add(item_first);
RowItem item_second = null;
RowItem item_third = null;
if(jobs.size() > i+1)
{
item_second = jobs.get(i+1);
_items.add(item_second);
}
if(jobs.size() > i+2)
{
item_third = jobs.get(i+2);
_items.add(item_third);
}
LinearLayout ll = new LinearLayout(this);
LinearLayout.LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
ll.setGravity(Gravity.CENTER);
ll.setLayoutParams(lp);
ll.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams lp_btn = new LayoutParams(convertToPx(100), convertToPx(100));
lp_btn.setMargins(convertToPx(5), convertToPx(5), convertToPx(5), convertToPx(5));
ImageButton btn_first = new ImageButton(this);
btn_first.setLayoutParams(lp_btn);
btn_first.setId(item_first.getId());
//getImagesAsyncTask img_first = new getImagesAsyncTask(item_first.getImageSrc(), btn_first, this);
//img_first.execute();
Picasso.with(this)
.load(item_first.getImageSrc().replace("~", URL_IAMGES))
.fit()
.into(btn_first, new Callback() {
@Override
public void onSuccess() {
String s = "asd";
}
@Override
public void onError() {
}
});
btn_first.setOnClickListener(this);
ll.addView(btn_first);
if(item_second != null)
{
ImageButton btn_second = new ImageButton(this);
btn_second.setLayoutParams(lp_btn);
btn_second.setId(item_second.getId());
//getImagesAsyncTask img_second = new getImagesAsyncTask(item_second.getImageSrc(), btn_second, this);
//img_second.execute();
Picasso.with(this)
.load(item_second.getImageSrc().replace("~", URL_IAMGES))
.fit()
.into(btn_second, new Callback() {
@Override
public void onSuccess() {
String s = "asd";
}
@Override
public void onError() {
}
});
btn_second.setOnClickListener(this);
ll.addView(btn_second);
}
if(item_third != null)
{
ImageButton btn_third = new ImageButton(this);
btn_third.setLayoutParams(lp_btn);
btn_third.setId(item_third.getId());
//getImagesAsyncTask img_second = new getImagesAsyncTask(item_third.getImageSrc(), btn_third, this);
//img_second.execute();
Picasso.with(this)
.load(item_third.getImageSrc().replace("~", URL_IAMGES))
.fit()
.into(btn_third, new Callback() {
@Override
public void onSuccess() {
String s = "asd";
}
@Override
public void onError() {
}
}
);
btn_third.setOnClickListener(this);
ll.addView(btn_third);
}
ll_parent.addView(ll);
}
}
我在我的asynctask的onPostExecute函数中调用了这个for循环的函数,该函数负责从webservice获取json数据。所有图像的图像源内容都是正确的,可以通过浏览器访问,原因可能是什么?提前谢谢
编辑:我检查过它似乎只加载了一张特定的图片,而不是最后一张。
答案 0 :(得分:1)
Url对网址进行编码。或者用%20替换空格。
答案 1 :(得分:0)
好的,我发现它,网址包含空格(感谢创作图像的设计师),所以因为毕加索未能下载我不知道他们不喜欢的图像。 t处理网址中的空格。无论如何,感谢greenapps的帮助。