2014-01-31 2 views
0

Я создал график времени для Facebook в своем приложении. У меня есть сообщения в группе FB, и я установил их в списке на Android, но когда я просматриваю список, я потерял свои второе изображение в элементе списка. Я дублировал свой класс загрузчика изображений, но ничего не изменилось.Два изображения в одном элементе списка просмотров

Перед свитка

Before Scroll

После прокрутки

After Scroll

Вот мой метод адаптер 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; 
} 

ответ

1

Вам нужно сделать holder.attachimage отображаемым в I е состояние как

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 предположит, что вид становится невидимым для конкретной позиции. Теперь, когда вы попытаетесь получить доступ к этому View, он войдет в состояние if и все будет выполнено, но вы не сможете его увидеть, так как его видимость была установлена ​​на View.GONE, и она не была установлена ​​на View.VISIBLE.

+1

+1. В более простых словах, потому что вы используете setVisibility (GONE), когда это не фотография, вы должны установитьVisibility (VISIBLE), если это фотография. –

0
// 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) 
Смежные вопросы