2012-02-29 6 views
1

В настоящее время у меня есть собственный адаптер списка, который имеет некоторую логику, которая скрывает/показывает определенный ImageView в строке в зависимости от переменной.Android: Почему мой стиль ListView удаляется, когда элемент списка прокручивается с экрана

Первоначально логика работает, когда приложение запускается первым. (ImageView скрыт/показан соответственно).

Но как только я прокручиваю экран вверх и вниз, в конце концов, весь образный образ строки скрыт навсегда.

Кто-нибудь знает, как решить эту проблему?

вот мой адаптер:

public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     PostHolder holder = null; 

     if(row == null) 
     { 
      LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
      row = inflater.inflate(layoutResourceId, parent, false); 

      holder = new PostHolder(); 
      holder.postThumb = (ImageView)row.findViewById(R.id.post_Thumb); 
      holder.postComments = (TextView)row.findViewById(R.id.post_comments); 
      holder.postInfo = (TextView)row.findViewById(R.id.item_subtitle); 
      holder.postScore = (TextView)row.findViewById(R.id.post_score); 
      holder.postTitle = (TextView)row.findViewById(R.id.item_title); 
      holder.postThumbHolder = (LinearLayout)row.findViewById(R.id.post_Thumb_holder); 
      row.setTag(holder); 
     } 
     else 
     { 
      holder = (PostHolder)row.getTag(); 
     } 

     HashMap<String, String> post = data.get(position); 

     if(post.get("thumbnail").equals("default") || post.get("thumbnail").equals("self")){ 
      holder.postThumbHolder.setVisibility(View.GONE); 
     } 

     holder.postComments.setText(post.get("comments")); 
     holder.postInfo.setText(post.get("info")); 
     holder.postScore.setText(post.get("score")); 
     holder.postTitle.setText(post.get("title")); 

     return row; 
    } 


    static class PostHolder 
    { 
     LinearLayout postThumbHolder; 
     ImageView postThumb; 
     TextView postComments; 
     TextView postScore; 
     TextView postTitle; 
     TextView postInfo;  
    } 

ответ

0

Установить видимость View.VISIBLE в postThumbHolder где-то. В блоке else вашего if (post.get... статья.

2

Это связано с тем, как андроид делает фон элементов списка в растровые изображения, как только вы начинаете прокрутку. Чтобы убедиться, что ваши изображения видны после прокрутки, вы также должны установить это свойство каждый раз, когда вызываются адаптеры getView, сделайте это в другой части проверки вашей переменной.

if(post.get("thumbnail").equals("default") || post.get("thumbnail").equals("self")){ 
     holder.postThumbHolder.setVisibility(View.GONE); 
} else { 
     holder.postThumbHolder.setVisibility(View.VISIBLE); 
}