2012-08-14 3 views
0

J'ai une liste personnalisée dans laquelle j'ai une vue de texte et une image maintenant je veux cacher ou afficher la vue d'image pour certains éléments dans la liste de lecture ony.Masquer dynamiquement des vues dans une liste personnalisée dans Android

Je l'ai fait en utilisant la méthode getview mais le problème est que lorsque la Listview est affichée à la première fois, la vue ne se cache pas mais lorsque je défile vers le bas et défile vers le haut, elle est cachée. ce qui suit est l'extrait de code. Merci d'avance.

public View getView(int position, View convertView, ViewGroup parent) { 
     View v = super.getView(position, convertView, parent); 
     ViewHolder holder; 
     if (v != convertView && v != null) { 
      holder = new ViewHolder();    
      convertView = mInflater.inflate(R.layout.jazzartist, null); 
      holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview); 
      v.setTag(holder); 


      } 
     else{  
     holder = (ViewHolder) convertView.getTag();  }   

     ViewHolder holder1 = (ViewHolder) v.getTag(); 
     holder1.objimg = (ImageView)convertView.findViewById(R.id.drag); 
     if(position == 4){ 

      (holder1.objimg).setVisibility(View.INVISIBLE); // here I am hiding Imageview for position 4 

      } 
     else 
     { 

      (holder1.objimg).setVisibility(View.VISIBLE); // here I am showing Imageview for rest of items 
     } 
       String albums = getItem(position).albums; 

     holder1.albumsView.setText(albums); 

     return v; 
     } 
    } 

    } 
+0

DonT utiliser cette ligne .. Voir v = super.getView (position, convertView, parent); utiliser Voir v = convertView; – SilentKiller

+0

L'application se bloque si j'ai enlevé la ligne – kendrelaxman

+0

essayez le code donné par Braj ... c'est aussi bon code .. – SilentKiller

Répondre

1

Essayez le code ci-dessous. Hope it helps

  ViewHolder holder; 
      if(convertView == null) 
      { 
       holder = new ViewHolder();    
       convertView = mInflater.inflate(R.layout.jazzartist, null); 
       holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview); 
       holder.objimg = (ImageView)convertView.findViewById(R.id.drag); 
       convertView.setTag(holder); 
      } 
      else 
      {  
       holder = (ViewHolder) convertView.getTag();  
      } 

      if(position == 4) 
      { 
       holder.objimg.setVisibility(View.INVISIBLE); // here I am hiding Imageview for position 4 
      } 
      else 
      { 
       holder.objimg.setVisibility(View.VISIBLE); // here I am showing Imageview for rest of items 
      } 

      String albums = getItem(position).albums; 
      holder.albumsView.setText(albums); 

      return convertView; 
+0

Cela aussi n'a pas fonctionné pour moi. En fait, la vue ne se cache pas après avoir fait défiler vers le bas et vers le haut. La vue reste intacte. une solution à cela? – kendrelaxman

+0

J'ai fait quelques petits changements. essayez une fois – Braj

+0

grand cela a travaillé pour.J'ai accepté la solution, s'il vous plaît dites-moi quel était le problème lors du défilement? – kendrelaxman

0

S'il vous plaît retirer les conditions à savoir si les autres (ne mettez pas vérifier les convertView)

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

    ViewHolder holder; 
      holder = new ViewHolder();    
     convertView = mInflater.inflate(R.layout.jazzartist, null); 
     holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview); 


    holder1.objimg = (ImageView)convertView.findViewById(R.id.drag); 
    if(position == 4){ 

     (holder1.objimg).setVisibility(View.INVISIBLE); // here I am hiding Imageview for position 4 

     } 
    else 
    { 

     (holder1.objimg).setVisibility(View.VISIBLE); // here I am showing Imageview for rest of items 
    } 
      String albums = getItem(position).albums; 

    holder1.albumsView.setText(albums); 

    return convertView; 
    } 
+0

ne fonctionnait pas. En fait, la vue ne se cache pas après avoir fait défiler vers le bas et vers le haut. – kendrelaxman

Questions connexes