2014-07-09 4 views
0

Pic d'application ici: http://imgur.com/6A92Yl6Android Gallery ne montrant trois images

J'ai donc une galerie mis en place que sur un click-through permet à l'utilisateur de sélectionner une image de la vue, puis voir la photo et leur correspondant griller avec.

Le problème est qu'il n'y a que trois images qui apparaissent. Je ne sais pas pourquoi et theres aucune variable qui limite la galerie, donc je suis à court de mots.

Mon principal:

public class MainActivity<View> extends Activity 
{ 

ImageView selectedImage; 
private Integer[] mImageIds = { 
      R.drawable.image1, 
      R.drawable.image2, 
      R.drawable.image3, 
      R.drawable.image4, 
      R.drawable.image5, 
      R.drawable.image6, 
      R.drawable.image7, 
      R.drawable.image8, 
      R.drawable.image9, 
      R.drawable.image10 
    }; 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

     Gallery gallery = (Gallery) findViewById(R.id.gallery1); 
    selectedImage=(ImageView)findViewById(R.id.imageView1); 
    gallery.setSpacing(1); 
    gallery.setAdapter(new GalleryImageAdapter(this)); 

    gallery.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      Toast.makeText(MainActivity.this, "THIS TEXT SHOULD NEVER SHOW = " + position, Toast.LENGTH_SHORT).show(); 
      // show the selected Image 
      selectedImage.setImageResource(mImageIds[position]); 
     } 

     @Override 
     public void onItemClick(AdapterView<?> parent, android.view.View v, int position, long id) { 
      Toast.makeText(MainActivity.this, "Picture Number: " + position, Toast.LENGTH_SHORT).show(); 
      // show the selected Image 
      selectedImage.setImageResource(mImageIds[position]); 

     } 
    }); 
} 
} 

MY XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<Gallery 
    android:id="@+id/gallery1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="350dp" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginTop="100dp" 
    android:layout_weight="0.13" 
    android:src="@drawable/image1" /> 

</LinearLayout> 
+0

Vous avez utilisé votre liste pour le remplir avec adaptateur. Afficher l'implémentation de Adapter. –

Répondre

1

Je suppose que vous avez oublié de remplir l'adaptateur avec mImageIds lors de la création du nouveau GalleryImageAdapter.

+0

Il y avait déjà trois vignettes. Comment puis-je peupler le reste? – Jayizzle

1

Vous devez utiliser l'adaptateur:

  1. appel Changement d'adaptateur:

    gallery.setAdapter (nouveau GalleryImageAdapter (ce, mImageIds));

  2. Ajouter/Mettre à jour GalleryImageAdapter.java:

    import java.util.List; 
    
    import android.app.Activity; 
    import android.graphics.drawable.Drawable; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.BaseAdapter; 
    import android.widget.Gallery; 
    import android.widget.ImageView; 
    
    public class GalleryImageAdapter extends BaseAdapter { 
    
    private Activity context; 
    
    private static ImageView imageView; 
    
    private List<Drawable> plotsImages; 
    
    private static ViewHolder holder; 
    
    public GalleryImageAdapter(Activity context, List<Drawable> plotsImages) { 
    
    this.context = context; 
    this.plotsImages = plotsImages; 
    
    } 
    
    @Override 
    public int getCount() { 
        return plotsImages.size(); 
    } 
    
    @Override 
    public Object getItem(int position) { 
        return null; 
    } 
    
    @Override 
    public long getItemId(int position) { 
        return 0; 
    } 
    
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    
        if (convertView == null) { 
    
        holder = new ViewHolder(); 
    
        imageView = new ImageView(this.context); 
    
        imageView.setPadding(3, 3, 3, 3); 
    
        convertView = imageView; 
    
        holder.imageView = imageView; 
    
        convertView.setTag(holder); 
    
    } else { 
    
        holder = (ViewHolder) convertView.getTag(); 
    } 
    
    holder.imageView.setImageDrawable(plotsImages.get(position)); 
    
    holder.imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
    holder.imageView.setLayoutParams(new Gallery.LayoutParams(150, 90)); 
    
    return imageView; 
    } 
    
    private static class ViewHolder { 
        ImageView imageView; 
    } 
    
    } 
    
+0

holder.imageView.setImageDrawable (plotsImages.get (position)); Il est dit que ".setImageDrawable dans le type imageview n'est pas applicable pour l'argument" – Jayizzle

+0

Comme vous utilisez des ID entiers et non directement les ressources **, au lieu d'utiliser setImageDrawable, utilisez setImageResource **. c'est-à-dire utiliser ** imageview.setImageResource (plotsImages.get (position)); ** –

+0

Je reçois toujours le même message d'erreur. – Jayizzle