我正在解析vk的组墙。有些帖子有照片(从1到10),有些没有。我需要展示它们。但是,所有图像都会重复出现。我无法使它们正确显示。我现在正在使用毕加索。它说它可以处理ListView图像,但事实并非如此。我在谷歌上的其他方式也不起作用。问题是如何正确处理图像。这是一段负责照片的代码。
private void place_photos(View view, ArrayList<VKPhoto> photos) {
int pcount = photos.size();
final View v = view;
TableRow first = (TableRow)v.findViewById(R.id.first_row);
TableRow second = (TableRow)v.findViewById(R.id.second_row);
TableRow third = (TableRow)v.findViewById(R.id.third_row);
for (int i = 0; i < pcount; i++) {
if (i == 1) {
ImageView img = new ImageView(mContext);
String url = photos.get(i).photo_807;
img.setTag(url);
Picasso.with(mContext).load(url).into(img);
if (first != null)
first.addView(img);
}
if (i == 2 || i == 3) {
ImageView img = new ImageView(mContext);
String url = photos.get(i).photo_807;
img.setTag(url);
Picasso.with(mContext).load(url).into(img);
if (second != null)
second.addView(img);
}
if (i > 3) {
ImageView img = new ImageView(mContext);
String url = photos.get(i).photo_807;
img.setTag(url);
Picasso.with(mContext).load(url).into(img);
if (third != null)
third.addView(img);
}
}
}
这就是在getView方法中调用它的方式:
if (post.attachments.hasPhoto) {
place_photos(v, post.attachments.photos);
} else {
viewHolder.photo_wrapper.setVisibility(View.GONE);
}
UPD 以下是完整的适配器代码:https://gist.github.com/alexbat98/7f22598e7e73d301a4ef
答案 0 :(得分:0)
尝试
ImageView img;
在ViewHolder类中,然后将其用作
viewHolder.img = viewHolder.photo;
viewHolder.img.setTag(photo_100);
imageLoader.DisplayImage(photo_100, viewHolder.img);
答案 1 :(得分:0)
问题应该归因于ListView
回收。
尝试覆盖getViewTypeCount
和getItemViewType
如果您的视图类型不同,则返回类型计数,例如如果有3种不同的类型,那么
@Override
public int getViewTypeCount() {
return 3;
}
然后告诉ListView
项目的哪个位置与其他位置不同,例如,如果位置0和1与其他项目不同,则将其更改为
@Override
public int getItemViewType(int position){
// return a unique number
if(position == 0){
return 0;
}
if(position == 1){
return 1;
}
else {
return 2;
}
}