2017-07-21 2 views
0

J'essaye de faire une application GridView comme j'ai fait le ListView personnalisé où j'ai utilisé le BaseAdapter.Impossible de faire GridView dans Android

Mais dans ce GridView Mainactivity.java, dans la classe CustomAdapter extends BaseAdapter impossible de retourner images.length, où images est un tableau d'entiers où j'ai pris toutes les images nécessaires.

Aussi, je suis incapable d'utiliser getLayoutInflater(), il est impossible de résoudre la méthode getLayoutInflater();

ci-dessous j'ai joint une capture d'écran où vous pouvez voir que je suis en train de retourner la longueur mais il montre l'erreur, de même la mise en page gonfleur

[d'erreur Affichage en ligne 39] [1]

[ Affichage de l'erreur à la ligne 59] [2]

Ci-dessous se trouvent les extraits de code.

Mainactivity.java

class customadapter extends BaseAdapter { 

@Override 
public int getCount() { 
    return images.length; 
} 

@Override 
public Object getItem(int i) { 
    return null; 
} 

@Override 
public long getItemId(int i) { 
    return 0; 
} 

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 
    // Everytime the user wants to display one item to the user, it simply calls the 
    //getview method , specifies the position of the item 
    view = getLayoutInflater().inflate(R.layout.custom, null); 
    return null; 
} 

}

S'il vous plaît ouvrir le lien ci-dessous pour les instantanés d'extrait de code

http://imgur.com/a/TePPm

+0

Vous n'êtes pas de stocker des données (images) à l'adaptateur, il ne fonctionnera pas. aller et vérifier son https://stackoverflow.com/a/20347155/3983054 –

Répondre

0

que vous devez faire le changement dans votre custom.xml Dans ce votre deux avec widthwrap_content et height est wrap_content.

vous devez inflate Layout Comme ci-dessous dans Adaptateur.

View view = LayoutInflater.from(mContext).inflate(R.layout.custom, parent, false); 
+0

je l'ai changé .. mais encore je reçois erreur dans mainactivity.java montrant que images.length n'est pas valide (en couleur rouge) – user2978343

+0

Aussi, comment changer la hauteur et la largeur est liée à getview et inflatable? – user2978343

+0

vérifier ma réponse mise à jour. –

0

vous devez définir des images dans l'adaptateur, ainsi que la mise en page de jeu correctement comme il a déjà répondu

public class MainActivity extends AppCompatActivity 
    { 



int[] images = 
     {R.drawable.Harvey, R.drawable.Litt,R.drawable.Mike,R.drawable.harvey, 
       R.drawable.mark_wahlberg 
     , R.drawable.oliver}; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    GridView gridView = (GridView)findViewById(R.id.grid1); 

    customadapter adapter = new customadapter(images); 
    gridView.setAdapter(adapter); 
} 
} 

cela vous aidera, je suppose.

class customadapter extends BaseAdapter 
    { 

     private int[] images; 

     public customadapter(int[] images) { 
      this.images = images; 
     } 

    @Override 
    public int getCount() 
    { 
     return images.length; 
    } 

    @Override 
    public Object getItem(int i) 
    { 
     return null; 
    } 

    @Override 
    public long getItemId(int i) 
    { 
     return 0; 
    } 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) 
    { 
     // Everytime the user wants to display one item to the user, it simply calls the 
     //getview method , specifies the position of the item 
     view = getLayoutInflater().inflate(R.layout.custom,null); 
     return null; 
    } 
    } 
0

Changer votre code comme celui-ci,

public class MainActivity extends AppCompatActivity 
    { 


Integer[] images = 
     {R.drawable.Harvey, R.drawable.Litt,R.drawable.Mike,R.drawable.harvey, 
       R.drawable.mark_wahlberg 
     , R.drawable.oliver}; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    GridView gridView = (GridView)findViewById(R.id.grid1); 

    gridView.setAdapter(new CustomGridAdapter(this, images)); 
    gridView.setAdapter(adapter); 
} 
} 

// Here is your custom Adapter 

    public class CustomGridAdapter extends BaseAdapter { 
     private Activity mContext; 

     // Keep all Images in array 
     public Integer[] mThumbIds; 

     // Constructor 
     public CustomGridAdapter(MainActivity mainActivity, Integer[] items) { 
      this.mContext = mainActivity; 
      this.mThumbIds = items; 
     } 

     @Override 
     public int getCount() { 
      return mThumbIds.length; 
     } 

     @Override 
     public Object getItem(int position) { 
      return mThumbIds[position]; 
     } 

     @Override 
     public long getItemId(int position) { 
      return 0; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView imageView = new ImageView(mContext); 
      imageView.setImageResource(mThumbIds[position]); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setLayoutParams(new GridView.LayoutParams(70, 70)); 
      return imageView; 
     } 

    } 
} 
+0

avez-vous résolu votre problème? –