Android 一个listview项中有两个图像

Android 一个listview项中有两个图像,android,listview,lazylist,Android,Listview,Lazylist,我已经在我的应用程序中创建了一个Facebook群组时间表。我在一个FB组中有帖子,我在Android的listview上设置了它们,但当我滚动listview时,我在列表项中丢失了第二张图片。我复制了我的图像加载器类,但没有任何更改 卷轴前 后卷轴 以下是我的适配器getView方法: @Override public View getView(int position, View convertView, ViewGroup parent) { View vi = conver

我已经在我的应用程序中创建了一个Facebook群组时间表。我在一个FB组中有帖子,我在Android的listview上设置了它们,但当我滚动listview时,我在列表项中丢失了第二张图片。我复制了我的图像加载器类,但没有任何更改

卷轴前

后卷轴

以下是我的适配器getView方法:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View vi = convertView;
    ViewHolder holder;
    if (convertView == null) {
        vi = inflater.inflate(R.layout.announce_item, null);
        holder = new ViewHolder();
        holder.textTitle = (TextView) vi.findViewById(R.id.textView1);
        holder.image = (ImageView) vi.findViewById(R.id.imageView1);
        holder.attachimage=(ImageView)vi.findViewById(R.id.attachimage);
        holder.contentArea = (TextView) vi.findViewById(R.id.textView2);
        vi.setTag(holder);
    } else
        holder = (ViewHolder) vi.getTag();

    holder.textTitle.setText(sender.get(position));
    String content = contentMessage.get(position);
    holder.contentArea.setText(Html.fromHtml(content.replace("\n", "<br/>")+" "+type.get(position)));
    holder.image.setTag(profilePicture.get(position));
    imageLoader.DisplayImage(profilePicture.get(position), activity,
            holder.image);
    if(type.get(position).equals("photo"))
    {
        holder.attachimage.setTag(attach.get(position));
        imageLoader3.DisplayImage(attach.get(position),activity,holder.attachimage);
        System.out.println("To Loader: "+attach.get(position));
    }
    else
    {
        holder.attachimage.setVisibility(View.GONE);

    }
    return vi;
}
@覆盖
公共视图getView(int位置、视图转换视图、视图组父视图){
视图vi=转换视图;
视窗座;
if(convertView==null){
vi=充气机。充气(R.layout.U项,空);
holder=新的ViewHolder();
holder.textTitle=(TextView)vi.findViewById(R.id.textView1);
holder.image=(ImageView)vi.findViewById(R.id.imageView1);
holder.attachimage=(ImageView)vi.findViewById(R.id.attachimage);
holder.contentArea=(TextView)vi.findViewById(R.id.textView2);
vi.setTag(支架);
}否则
holder=(ViewHolder)vi.getTag();
holder.textitle.setText(sender.get(position));
String content=contentMessage.get(位置);
holder.contentArea.setText(Html.fromHtml(content.replace(“\n”,“
”)+“+type.get(position)); holder.image.setTag(profilePicture.get(position)); imageLoader.DisplayImage(profilePicture.get(位置)、活动、, (如图所示); if(type.get(position).equals(“照片”)) { holder.attachimage.setTag(attach.get(position)); imageLoader3.DisplayImage(attach.get(position)、activity、holder.attachimage); System.out.println(“到加载器:+attach.get(位置)); } 其他的 { holder.attachimage.setVisibility(View.GONE); } 返回vi; }
您需要使
支架.附件图像在您的if条件下可见,如

if(type.get(position).equals("photo"))
{
    holder.attachimage.setVisibility(View.VISIBLE);// you need to make it visible here
    holder.attachimage.setTag(attach.get(position));
    imageLoader3.DisplayImage(attach.get(position),activity,holder.attachimage);
    System.out.println("To Loader: "+attach.get(position));
}
else
{
    holder.attachimage.setVisibility(View.GONE);

}

使用
holder
时,假设视图在特定位置不可见。现在,当您再次尝试访问该
视图时,它将进入
if
状态,所有操作都将执行,但您将无法看到它,因为它的可见性已设置为
视图。消失了
,并且未设置回
视图。可见

+1。简单地说,因为您在使用setVisibility(GONE)时它不是照片,所以如果它是照片,您必须设置Visibility(VISIBLE)。
// try this way

1. Download AndroidQuery jar from here:

http://code.google.com/p/android-query/downloads/detail?name=android-query-full.0.25.10.jar.

2. Put this jar to your libs folder and right click on jar and Build Path -> Add to bulid path

3. How to use see this example:

AQuery androidQuery = new AQuery(this);

androidQuery.id(yourImageViewId).image("imageUrl", true, true);

// androidAQuery.id(img1).image(imageUrl, memeryCache, fileCache);

// memeryCache : if give url image in Android Query memmery cache then it will not again get from server so set true if you not want to get from server on each time
// fileCache : if give url image in  Android Query file cache then it will not again get from server so set true if you not want to get from server on each time (In case memmery is not free or enough than it cache in file if we gave fileCache true)