Pageable Listview

by Makas Tzavellas » Tue, 16 Mar 2010 03:16:02 GMT

Sponsored Links
 Hi all,

I recently worked on an Android app that needed a ListView that
behaves "similar" to the Android market, by allowing the list in the
ListView to "grow" as the user scrolls to the bottom.

I tried to implement it in a generic manner so that it could be
reused. For those that has the same requirement, the source code is
available at

The code will still need some work, it's only the first iteration.



Other Threads

1. source code help - reading framebuffer using glReadPixels


I am new to Android development and working on an assignment to read
the framebuffer after some time interval and save it as an image.
I have come up with the following code initially only for reading and
saving the framebuffer, but this is not working and giving a run time
error. The emulator says that "the application stopped unexpectedly,
Please try again"

This is the current code: (I am using the Android 2.2 with API level 8
virtual device for testing, I don't have a physical device at the

public class mainActivity extends Activity
        Bitmap mSavedBM;
        private EGL10 egl;
    private EGLDisplay display;
    private EGLConfig config;
    private EGLSurface surface;
    private EGLContext eglContext;
    private GL11 gl;
    protected int width, height;

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState)

        // get the screen width and height
        DisplayMetrics dm = new DisplayMetrics();
        int screenWidth = dm.widthPixels;
        int screenHeight = dm.heightPixels;

        String SCREENSHOT_DIR = "/screenshots";
        initGLFr(); //GlView initialized.
        savePixels( 0, 10, screenWidth, screenHeight, gl); //this gets
the screen to the mSavedBM.
        saveBitmap(mSavedBM, SCREENSHOT_DIR, "capturedImage");

        //Now we need to save the bitmap (the screen capture) to some
        setContentView(R.layout.main); //This displays the content on
the screen

    private void initGLFr()
        egl = (EGL10) EGLContext.getEGL();
        display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
        int[] ver = new int[2];
        egl.eglInitialize(display, ver);

        int[] configSpec = {EGL10.EGL_NONE};
        EGLConfig[] configOut = new EGLConfig[1];
        int[] nConfig = new int[1];
        egl.eglChooseConfig(display, configSpec, configOut, 1,
        config = configOut[0];
        eglContext = egl.eglCreateContext(display, config,
        surface = egl.eglCreateWindowSurface(display, config,
SurfaceHolder.SURFACE_TYPE_GPU, null);
        egl.eglMakeCurrent(display, surface, surface, eglContext);
        gl = (GL11) eglContext.getGL();
    public void savePixels(int x, int y, int w, int h, GL10 gl)
        if (gl == null)

         synchronized (this) {
         if (mSavedBM != null) {
         mSavedBM = null;

        int b[] = new int[w * (y + h)];
        int bt[] = new int[w * h];
        IntBuffer ib = IntBuffer.wrap(b);
        gl.glReadPixels(x, 0, w, y + h,

        for (int i = 0, k = 0; i < h; i++, k++)
                //OpenGLbitmap is incompatible with Android bitmap
            //and so, some corrections need to be done.
                for (int j = 0; j < w; j++)
                        int pix = b[i * w + j];
                        int pb = (pix >> 16) & 0xff;
                        int pr = (pix << 16) & 0x00ff0000;
                        int pix1 = (pix & 0xff00ff00) | pr | pb;
                        bt[(h - k - 1) * w + j] = pix1;

        Bitmap sb = Bitmap.createBitmap(bt, w, h,
        synchronized (this)
                mSavedBM = sb;

    static String saveBitmap(Bitmap bitmap, String dir, String
baseName) {
        try {
            File sdcard = Environment.getExternalStorageDirectory();
            File pictureDir = new File(sdcard, dir);
            File f = null;
            for (int i = 1; i < 200; ++i) {
                String name = baseName + i + ".png";
                f = new File(pictureDir, name);
                if (!f.exists()) {
            if (!f.exists()) {
                String name = f.getAbsolutePath();
                FileOutputStream fos = new FileOutputStream(name);
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
                return name;
        } catch (Exception e) {

        } finally {
            if (fos != null) {
        return null;

Also, if someone can point me to sample code/tutorial to get this work
done through the NDK r4. I have read that the NDK r4 supports the
opengl es 1.1 and 2.0.
the framebuffer directly using the "/dev/graphics/fb0".



2. prob in attaching txt file while email from internal package file storage


I am successful in creating file using openFileOutput(). and can read
the file using openFileInput().
I am able attach file from external storage sdcard while emailing the
same using getExternalStorageDirectory as

But while trying to attach file from the openOutputFile stored area
using sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+
getFilesDir() + "/zibra.txt"));, resulting emptied file emailing.
My file is stored in "/data/data/com.example/files/zibra.txt".

Could you please point out what is going wrong in it?
Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_EMAIL, recipients);
        sendIntent.putExtra(Intent.EXTRA_SUBJECT, "attachment test");
        sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse
                        ("file://"+ getFilesDir() + "/zibra.txt"));
        startActivity(Intent.createChooser(sendIntent, "Send mail..."));


3. How to parse the xml from a httpresponse?

4. automatically turn on application

5. Converting audio format

6. Why Activity with Translucent background can not finish immediately?

7. Guide me to learn