2016-03-16 1 views
0

En mode Grille, je remplis 46 données (Nom et Image) mais uniquement les 6 premières données qui se répètent encore et encore.Répétition des mêmes données dans GridLayout pour tous les éléments de l'adaptateur

public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View grid; 
     LayoutInflater inflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 

      grid = new View(mContext); 
      grid = inflater.inflate(R.layout.grid_item, null); 
      TextView textView = (TextView) grid.findViewById(R.id.txtTitle); 
      ImageView imageView = (ImageView)grid.findViewById(R.id.imgGrid); 
      textView.setText(web[position]); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     // imageView.setBackgroundResource(web[position]); 
      Glide.with(mContext).load(Imageid[position]).into(imageView); 
     } else { 
      grid = (View) convertView;//setBackground(Imageid[position]); 
     } 

     return grid; 
    } 
+0

veuillez coller votre code d'activité de code complet et le code de l'adaptateur et votre code xml complet –

Répondre

0

Utilisez ViewHolder pour Initialise cellulaire Grille comme donner ci-dessous

public class Viewholder { 
     TextView textView; 
     ImageView imageView 
    } 

et changer votre getView() méthode comme celui-ci

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    Viewholder holder; 
    if (convertView == null) { 

     holder = new Viewholder(); 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.grid_list_item, null); 

     holder.textView = (TextView) convertView.findViewById(R.id.txtTitle); 
    holder.imageView = (ImageView)convertView.findViewById(R.id.imgGrid); 


     convertView.setTag(holder); 

    } else { 

     holder = (Viewholder) convertView.getTag(); 
    } 

    holder.textView.setText(web[position]); 
     holder.imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      Glide.with(mContext).load(Imageid[position]).into(holder.imageView); 

    return convertView; 
} 
+0

Merci Kamlesh. Je n'ai pas 15 repo donc j'ai coché marquer votre réponse. – Skm

0

Cela se produit parce qu'il est recyclé quand tu fais défiler.

quelque chose comme ça

public View getView(int position, View convertView, ViewGroup parent) { 
    Holder holder; 
    LayoutInflater inflater = (LayoutInflater) mContext 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    if (convertView == null) { 

     holder = new Holder(); 
     convertView = inflater.inflate(R.layout.grid_item, null); 
     holder.textView = (TextView) convertView.findViewById(R.id.txtTitle); 
     holder.imageView = (ImageView)convertView.findViewById(R.id.imgGrid); 
     convertView.setTag(holder); 

    } else { 
     holder = (Holder) convertView.getTag(); 
    } 
    holder.textView.setText(web[position]); 
    holder.imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    Glide.with(mContext).load(Imageid[position]).into(holder.imageView); 
    return grid; 
} 
class Holder{ 
    TextView textView; 
    ImageView imageView; 
} 

J'espère que cela vous aidera.