2013-06-29 3 views
1

c'est le code dans mon adaptateur personnalisé (LE CODE EN COULEUR BRUN) lorsque la liste initiale est la construction de la marge correcte est appliquée aux éléments valides lorsque je fais défiler vers le bas et de nouveau défiler toutes les lignes dans la liste décale la marge gauche de 20 ce que je fais mal s'il vous plaît répondre rapidementStyle ListView Chaque ligne

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

     final ViewHolder holder; 
     // getting data 
     final ViewMovieDetailsModel_ViewComments movies = getItem(position); 

     if (convertView == null) 
     { 
      convertView = View.inflate(context, R.layout.comment_row, null);     
      holder = new ViewHolder(); 

      //getting handles 

      holder.comments_linearLayout = (LinearLayout) convertView.findViewById(R.id.comments_linearLayout); 
      holder.commenter_textView = (TextView) convertView.findViewById(R.id.comment_row_commenter); 
      holder.commented_on_textView = (TextView) convertView.findViewById(R.id.comment_row_comment_time); 
      holder.comment_text_textView = (TextView) convertView.findViewById(R.id.comment_row_comment_text); 
      holder.reply_button = (Button) convertView.findViewById(R.id.comment_row_reply_button); 

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

     if (movies != null) 
     { 
      if (((movies.getParent_comment_id()).toString().equals("null")) && session.isLoggedIn()==true) { 
       holder.reply_button.setVisibility(View.VISIBLE); 
      }else{ 
       holder.reply_button.setVisibility(View.INVISIBLE); 
      } 


`if (!((movies.getParent_comment_id()).toString().equals("null"))) 
{ 

LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); 
        params.setMargins(20, 0, 0, 0); 
        holder.comments_linearLayout.setLayoutParams(params); 
}` 


      holder.commenter_textView.setText(movies.getUsername_commentor()); 

      holder.commenter_textView.setTag(movies.getUser_id_commentor()); 

     return convertView; 
    } 
+0

utiliser un listview personnalisé avec un adaptateur personnalisé – Raghunandan

+0

@Raghunandan J'utilise listview personnalisé avec adaptateur personnalisé –

+0

@Raghunandan s'il vous plaît poster votre entière mise en œuvre de getView . – woot

Répondre

0

parce que vous la définition des marges (la police brune) dans « if »:

if (movies != null) 

prendre juste de ce si le bloc (par exemple, mettez-le juste avant le point de retour)

À l'heure actuelle, ce code n'est probablement pas exécuté au premier chargement de la vue, car le film est nul. Lorsque le getView est appelé une deuxième fois, le film n'est pas nul, et le marigin est défini en fonction de votre code «marron».

si ce n'est pas la solution - peut-être que la condition d'instruction if interne n'est pas vraie (celle qui est dans la première ligne 'brown'). donc ... votre propre logique empêche les marigins d'être réglés comme vous le souhaitez :)

S'il vous plaît laissez-moi savoir si cela aide.

+0

ne vous aide pas i assure u que si je l'ai mentionné la condition ici est correcte lors du premier appel les lignes sont fixées en fonction de la condition donnée ci-dessus, mais quand je défiler vers le bas et faire défiler toutes les lignes accqure même style S'il vous plaît aidez-moi je suis bloqué à cela pour si longtemps –

+0

Je recommande fortement de prendre les paramètres de mise en page de très si, et placez-le juste avant le point de retour. Juste pour essayer - cela ne coûte rien. les vues dans ListView sont réutilisées. Donc, ils ne sont pas construits à partir de zéro à chaque fois. C'est probablement la raison pour laquelle vous avez des coditions comme movie! = Null. –

+0

ou un événement plus simple: dans un bloc de code 'brun', placez un point d'arrêt ou une instruction de journal et vérifiez s'il est exécuté chaque fois que vous l'attendez –

0

Une façon vous pouvez aller sur la résolution de ce problème est au lieu d'utiliser LayoutParams.setMargins(20, 0, 0, 0), vous pouvez créer un vide TextView dont la largeur est 20 dp par défaut et dont la position sera à gauche de votre contenu lignes. Il sera View.GONE par défaut, mais quand if (!((movies.getParent_comment_id()).toString().equals("null"))) arrive, vous pouvez définir que pour View.VISIBLE

+0

Je veux la disposition linéaire entière de rangée pour avoir la marge non seulement spécifiquement textview. pouvez-vous me fournir un moyen –

Questions connexes