Skip to content Skip to sidebar Skip to footer

How To Create Gridview Image Gallery Programmatically In Android?

I want to create 3x3 gridview programmatically for displaying images. And I want to set each item height and width by getting screen dimensions. Like: DisplayMetrics metrics = cont

Solution 1:

This is how you can create gridview programmatically,

GridViewgrid=newGridView(this);
    grid.setId(ViewIdentification.getId());
    grid.setLayoutParams(newGridView.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
    grid.setBackgroundColor(Color.WHITE);
    grid.setNumColumns(3);
    grid.setColumnWidth(GridView.AUTO_FIT);
    grid.setVerticalSpacing(5);
    grid.setHorizontalSpacing(5);
    grid.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);

Add the above view to your layout. And here you can get the height and width of the display.

DisplayMetricsdisplaymetrics=newDisplayMetrics();
getWindowManager().getDefaultDisplay()
            .getMetrics(displaymetrics);
intwidth= displaymetrics.widthPixels;
intheight= displaymetrics.heightPixels;

And here is the adapter class :

publicclassImageAdapterextendsBaseAdapter {

    private Context mContext;
    private Bitmap[]mis_fotos;

    publicImageAdapter(Context c) {
        mContext = c;    }

    publicintgetCount() {
        return mis_fotos.length;
        }

    public Object getItem(int position) {
        return position;    }

    publiclonggetItemId(int position) {
        return0;    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(width/3, height/3));
            imageView.setScaleType(ImageView.setScaleType(ScaleType.FIT_XY));
            imageView.setPadding(0, 0, 0, 0);
        } else {
            imageView = (ImageView) convertView;
        }
        imageView.setImageBitmap(mis_fotos[position]);
        return imageView;
    }
}

Then, It's upto you, If you are passing dynamic URL, change your adapter accordingly. set your adapter to your gridview. Let me know if you have any issues.

Solution 2:

In your Activity:

@OverridepublicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GridViewgridView=newGridView(this);
gridView.setNumColumns(3);
setContentView(gridView);
gridView.setAdapter(newGridViewAdapter(this));
}

And Adapter:

privateclassGridViewAdapterextendsBaseAdapter {
private Context context;
privatefinalintlength=9;
publicGridViewAdapter(Context context) {
            this.context = context;
}
@OverridepublicintgetCount() {
            return length;
        }
@Overridepublic Object getItem(int position) {
            returnnull;
        }
@OverridepubliclonggetItemId(int position) {
            return0;
        }
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView;
            if (convertView == null) {
                imageView = newImageView(context);
                DisplayMetricsmetrics= context.getResources().getDisplayMetrics();
                intwidth= metrics.widthPixels / 3;
                intheight= metrics.heightPixels / 3;
                imageView.setLayoutParams(newGridView.LayoutParams(width, height));
            } else {
                imageView = (ImageView) convertView;
            }
imageView.setImageResource(R.drawable.ic_launcher);
            return imageView;
        }
    }

Post a Comment for "How To Create Gridview Image Gallery Programmatically In Android?"