Jul 21, 2011

Implement a photo bar using android.widget.Gallery, with custom BaseAdapter, and custom object.

In this example, I will implement a photo bar using android.widget.Gallery.

a photo bar using android.widget.Gallery, with custom BaseAdapter, and custom object.

We will implement MyAdapter extends BaseAdapter, it hold a ArrayList of our custom object ImageItem. In the constructor of MyAdapter, an empty ArrayList of ImageItem will be new. And a method addImageItem is implemented to add new items into the ArrayList.

insertDummyImageItem(3) is a dummy method to add new items into the ArrayList of MyAdapter. As a example, all items have the same bitmap - R.drawable.icon. After items inserted, we have to call notifyDataSetChanged() of the MyAdapter to update the photo bar.

In such a approach, we can add new item on runtime. We will do more on coming post "Update BaseAdapter in backgrond Thread, to insert Gallery items in run-time.".

package com.AndroidPhotoBar;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class AndroidPhotoBarActivity extends Activity {

ArrayList<ImageItem> arrayImageItem;
MyAdapter myAdapter;

public class ImageItem {

Bitmap bitmapImage;

//To simplify, we use a default image here
bitmapImage = BitmapFactory.decodeResource(
AndroidPhotoBarActivity.this.getResources(), R.drawable.icon);

public Bitmap getImage(){
return bitmapImage;


Gallery myPhotoBar;

/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
myPhotoBar = (Gallery)findViewById(R.id.photobar);

myAdapter = new MyAdapter(this); //init myAdapter without ImageItem

//insert dummy ImageItem into myAdapter

//insert dummy ImageItem into myAdapter in Run time


private void insertDummyImageItem(int cnt){

//Insert dummy ImageItem into myAdapter
for(int i = 0; i < cnt; i++){
myAdapter.addImageItem(new ImageItem());


public class MyAdapter extends BaseAdapter {

Context context;
ArrayList<ImageItem> _arrayImageItem;

MyAdapter(Context c){
context = c;
_arrayImageItem = new ArrayList<ImageItem>();

public void addImageItem(ImageItem item){

public int getCount() {
// TODO Auto-generated method stub
return _arrayImageItem.size();

public Object getItem(int position) {
// TODO Auto-generated method stub
return _arrayImageItem.get(position);

public long getItemId(int position) {
// TODO Auto-generated method stub
return position;

public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView imageView;
imageView = new ImageView(context);

imageView.setLayoutParams(new Gallery.LayoutParams(150, 150));

return imageView;


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

next post:
- Update BaseAdapter in backgrond Thread, to insert Gallery items in run-time.

related article:
- Implement Horizontal ListView using android.widget.Gallery, with custom BaseAdapter.

No comments:

Post a Comment

Infolinks In Text Ads