Problem with GridView when displaying image thumbnails

Put problem concerning Views, Layouts and other XML-Resources (like AndroidManifest) here.

Problem with GridView when displaying image thumbnails

Postby paul.ramesh » Wed Mar 25, 2009 2:35 pm

Hi everybody,

Im displaying the thumbnails of images stored in the SDcard.
It works fine when i have less number of images in my SDcard.
But when the number of images exceeds more than 12, it repeating some images again and again.
This is my code
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.gallery;
  2.  
  3. import android.app.Activity;
  4.  
  5. import android.content.Context;
  6.  
  7. import android.database.Cursor;
  8.  
  9. import android.net.Uri;
  10.  
  11. import android.os.Bundle;
  12.  
  13. import android.view.View;
  14.  
  15. import android.view.ViewGroup;
  16.  
  17. import android.widget.AdapterView;
  18.  
  19. import android.widget.BaseAdapter;
  20.  
  21. import android.widget.GridView;
  22.  
  23. import android.widget.ImageView;
  24.  
  25. import android.widget.Toast;
  26.  
  27. import android.widget.AdapterView.OnItemClickListener;
  28.  
  29. import android.provider.MediaStore;
  30.  
  31.  
  32.  
  33. public class GridExample extends Activity {
  34.  
  35.            
  36.  
  37.     private Context mContext;
  38.  
  39.     private Cursor cursor;
  40.  
  41.     private int column_index;
  42.  
  43.     private GridView g;
  44.  
  45.  
  46.  
  47.     @Override
  48.  
  49.     public void onCreate(Bundle savedInstanceState) {
  50.  
  51.         super.onCreate(savedInstanceState);      
  52.  
  53.         setContentView(R.layout.main);
  54.  
  55.         String [] proj={MediaStore.Images.Thumbnails._ID};
  56.  
  57.        
  58.  
  59.         cursor = managedQuery( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
  60.  
  61.                 proj,
  62.  
  63.                 null,    
  64.  
  65.                 null,      
  66.  
  67.                 null);  
  68.  
  69.        
  70.  
  71.                
  72.  
  73.         column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
  74.  
  75.        
  76.  
  77.         g = (GridView) findViewById(R.id.grid);
  78.  
  79.         g.setAdapter(new ImageAdapter(this));      
  80.  
  81.        
  82.  
  83.         g.setOnItemClickListener(new OnItemClickListener() {
  84.  
  85.             public void onItemClick(AdapterView parent, View v, int position, long id) {
  86.  
  87.                String [] proj={MediaStore.Images.Media.DATA};
  88.  
  89.                     cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
  90.  
  91.                           proj,
  92.  
  93.                           null,      
  94.  
  95.                           null,      
  96.  
  97.                           null);
  98.  
  99.                  
  100.  
  101.                   column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  102.  
  103.                  
  104.  
  105.                   cursor.moveToPosition((int) g.getSelectedItemId());
  106.  
  107.                  
  108.  
  109.                   String filename = cursor.getString(column_index);
  110.  
  111.                   Toast.makeText(GridExample.this, filename, Toast.LENGTH_SHORT).show();
  112.  
  113.             }
  114.  
  115.         });        
  116.  
  117.     }
  118.  
  119.  
  120.  
  121.     public class ImageAdapter extends BaseAdapter {
  122.  
  123.  
  124.  
  125.         public ImageAdapter(Context c) {
  126.  
  127.             mContext = c;
  128.  
  129.         }
  130.  
  131.  
  132.  
  133.         public int getCount() {
  134.  
  135.           return cursor.getCount();
  136.  
  137.         }
  138.  
  139.  
  140.  
  141.         public Object getItem(int position) {
  142.  
  143.             return position;
  144.  
  145.         }
  146.  
  147.  
  148.  
  149.         public long getItemId(int position) {
  150.  
  151.             return position;
  152.  
  153.         }
  154.  
  155.  
  156.  
  157.         public View getView(int position, View convertView, ViewGroup parent) {
  158.  
  159.           ImageView i;
  160.  
  161.           if (convertView == null) {
  162.  
  163.                   i = new ImageView(mContext);
  164.  
  165.                cursor.moveToPosition(position);
  166.  
  167.                     int id = cursor.getInt(column_index);
  168.  
  169.                     i.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""+id));
  170.  
  171.                     i.setScaleType(ImageView.ScaleType.FIT_XY);
  172.  
  173.                     i.setLayoutParams(new GridView.LayoutParams(92, 92));
  174.  
  175.           }
  176.  
  177.           else
  178.  
  179.           {
  180.  
  181.                   i=(ImageView)convertView;
  182.  
  183.           }
  184.  
  185.                return i;
  186.  
  187.         }
  188.  
  189.       }
  190.  
  191. }
Parsed in 0.043 seconds, using GeSHi 1.0.8.4

xml code is
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1.  <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <LinearLayout
  4.  
  5.   xmlns:android="http://schemas.android.com/apk/res/android"
  6.  
  7.   android:orientation="vertical"
  8.  
  9.   android:layout_width="fill_parent"
  10.  
  11.   android:layout_height="fill_parent">    
  12.  
  13.   <GridView xmlns:android="http://schemas.android.com/apk/res/android"
  14.  
  15.                                 android:id="@+id/grid" android:layout_width="fill_parent"
  16.  
  17.                                 android:layout_height="fill_parent" android:numColumns="auto_fit"
  18.  
  19.                                 android:verticalSpacing="10dp" android:horizontalSpacing="10dp"
  20.  
  21.                                 android:columnWidth="90dp" android:stretchMode="columnWidth"
  22.  
  23.                                 android:gravity="center" />
  24.  
  25. </LinearLayout>
Parsed in 0.002 seconds, using GeSHi 1.0.8.4



Can anybody help me in this.

Thanks,
Ramesh
paul.ramesh
Freshman
Freshman
 
Posts: 4
Joined: Sat Mar 14, 2009 11:18 am

Top

Postby ezuall » Sun Aug 16, 2009 10:29 pm

Hi there,

Did you ever get to the bottom of this, because I am having exactly the same problem?

Thanks
ezuall
ezuall
Junior Developer
Junior Developer
 
Posts: 15
Joined: Sun Aug 16, 2009 10:27 pm

Postby zoalord12 » Mon Aug 17, 2009 1:48 am

Same problem here ... i spent a lot of time on it .. no luck
one thing i noted was that when you use

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. public View getView(int position,View convertView,ViewGroup parent) {
  2.  
  3.                   System.gc();
  4.  
  5.                   ImageView i = new ImageView(mContext.getApplicationContext());
  6.  
  7.                   if (convertView == null) {
  8.  
  9.                         imagecursor.moveToPosition(position);
  10.  
  11.                         int id = imagecursor.getInt(image_column_index);
  12.  
  13.                         i.setImageURI(Uri.withAppendedPath(
  14.  
  15. MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""
  16.  
  17. + id));
  18.  
  19.                        // i.setImageResource((int)this.getItemId(id));
  20.  
  21.                        
  22.  
  23.                     //  i.setBackgroundResource(mGalleryItemBackground);
  24.  
  25.                         //i.setPadding(2, 2, 2, 2);
  26.  
  27.                         i.setScaleType(ImageView.ScaleType.CENTER_CROP);
  28.  
  29.                         i.setLayoutParams(new GridView.LayoutParams(92, 92));
  30.  
  31.                   }
  32.  
  33.                   else {
  34.  
  35.                         i = (ImageView) convertView;
  36.  
  37.                   }
  38.  
  39.                   return i;
  40.  
  41.             }
Parsed in 0.034 seconds, using GeSHi 1.0.8.4


this happens , but if you create a new view everytime the problem goes away but you end up running out of memory after scrolling a few times top - bottom and bottom - top in ur image grid .. help :'(
zoalord12
Freshman
Freshman
 
Posts: 7
Joined: Mon Aug 17, 2009 1:43 am

Postby ezuall » Mon Aug 17, 2009 7:10 am

Thanks for the reply.

So if this is not working as it should, does anyone have a suggestion of another approach? I don't know if this is the case universally, but my gridview (trying to display 350 thumbnails) is painfully slow in any case.

Cheers
e
ezuall
Junior Developer
Junior Developer
 
Posts: 15
Joined: Sun Aug 16, 2009 10:27 pm

Postby zoalord12 » Mon Aug 17, 2009 9:10 am

well, i'm kind ov stuck on this too ...
i tried using a gallery, gallery with threads , image grid view ( with and with out a cursor .. hoping that the database query was messed up somehow) but i jst cant seem to fix it ...

i just modified the source though getting it from different sites ... but anyways ... i fixed the looping thing .. but i cant fix the onitemclick ..since it gives the wrong index everytime .... and no matter what i do after a few images the index overshoots or undershoots the clicked index


Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. package com.major;
  3.  
  4.  
  5.  
  6. import java.io.File;
  7.  
  8.  
  9.  
  10. import com.major.R.string;
  11.  
  12.  
  13.  
  14. import android.app.Activity;
  15.  
  16. import android.content.Context;
  17.  
  18. import android.content.Intent;
  19.  
  20. import android.content.res.TypedArray;
  21.  
  22. import android.database.Cursor;
  23.  
  24. import android.graphics.Bitmap;
  25.  
  26. import android.graphics.BitmapFactory;
  27.  
  28. import android.graphics.drawable.Drawable;
  29.  
  30. import android.net.Uri;
  31.  
  32. import android.os.Bundle;
  33.  
  34. import android.os.Handler;
  35.  
  36. import android.os.Message;
  37.  
  38.  
  39.  
  40. import android.view.MotionEvent;
  41.  
  42. import android.view.View;
  43.  
  44. import android.view.ViewGroup;
  45.  
  46. import android.view.View.OnTouchListener;
  47.  
  48. import android.view.ViewGroup.LayoutParams;
  49.  
  50. import android.widget.AdapterView;
  51.  
  52. import android.widget.BaseAdapter;
  53.  
  54. import android.widget.Gallery;
  55.  
  56. import android.widget.ImageButton;
  57.  
  58. import android.widget.ImageView;
  59.  
  60. import android.widget.Toast;
  61.  
  62. import android.widget.AdapterView.OnItemClickListener;
  63.  
  64. import android.widget.AdapterView.OnItemSelectedListener;
  65.  
  66. import android.provider.MediaStore;
  67.  
  68.  
  69.  
  70. public class GalleryExample extends Activity {
  71.  
  72.  
  73.  
  74.         private Context mContext;
  75.  
  76.         private Cursor cursor;
  77.  
  78.         private int column_index;
  79.  
  80.         private Gallery g;
  81.  
  82.  
  83.  
  84.         @Override
  85.  
  86.         public void onCreate(Bundle savedInstanceState) {
  87.  
  88.                 super.onCreate(savedInstanceState);
  89.  
  90.                 setContentView(R.layout.galleryexample1);
  91.  
  92.  
  93.  
  94.                 // Here we set up a string array of the thumbnail ID column we want to
  95.  
  96.                 // get back
  97.  
  98.                 String[] proj = { MediaStore.Images.Thumbnails._ID };
  99.  
  100.                 // Now we create the cursor pointing to the external thumbnail store
  101.  
  102.                 cursor = managedQuery(
  103.  
  104.                                 MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, proj, // Which
  105.  
  106.                                                                                                                                                         // columns
  107.  
  108.                                                                                                                                                         // to
  109.  
  110.                                                                                                                                                         // return
  111.  
  112.                                 null, // WHERE clause; which rows to return (all rows)
  113.  
  114.                                 null, // WHERE clause selection arguments (none)
  115.  
  116.                                 null); // Order-by clause (ascending by name)
  117.  
  118.                 // We now get the column index of the thumbnail id
  119.  
  120.                 // startManagingCursor(cursor);
  121.  
  122.                 column_index = cursor
  123.  
  124.                                 .getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
  125.  
  126.                 // Reference the Gallery view
  127.  
  128.                 g = (Gallery) findViewById(R.id.gallery);
  129.  
  130.  
  131.  
  132.                 // Set the adapter to our custom adapter (below)
  133.  
  134.                 g.setAdapter(new ImageAdapter(this));
  135.  
  136.  
  137.  
  138.                 // Set a item click listener, and just Toast the clicked position
  139.  
  140.  
  141.  
  142.                 ThreadExt th = new ThreadExt();
  143.  
  144.                 th.start();
  145.  
  146.                 g.setOnItemSelectedListener(new OnItemSelectedListener() {
  147.  
  148.                         @Override
  149.  
  150.                         public void onItemSelected(AdapterView arg0, View arg1, int arg2,
  151.  
  152.                                         long arg3) {
  153.  
  154.                                 ImageView ibutton = (ImageView) (findViewById(R.id.ibuttion));
  155.  
  156.                                 ibutton.setImageURI(Uri.withAppendedPath(
  157.  
  158.                                                 MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""
  159.  
  160.                                                                 + (arg2 )));
  161.  
  162.                                 filename = "" + arg2 ;
  163.  
  164.                                
  165.  
  166.  
  167.  
  168.                         }
  169.  
  170.  
  171.  
  172.                         @Override
  173.  
  174.                         public void onNothingSelected(AdapterView<?> arg0) {
  175.  
  176.                                 // TODO Auto-generated method stub
  177.  
  178.  
  179.  
  180.                         }
  181.  
  182.                 });
  183.  
  184.  
  185.  
  186.         }
  187.  
  188.  
  189.  
  190.         public void toast(String filename) {
  191.  
  192.                 try {
  193.  
  194.                         Toast.makeText(GalleryExample.this, filename, Toast.LENGTH_SHORT)
  195.  
  196.                                         .show();
  197.  
  198.                 } catch (Exception e) {
  199.  
  200.                         e.printStackTrace();
  201.  
  202.                 }
  203.  
  204.         }
  205.  
  206.  
  207.  
  208.         public class ImageAdapter extends BaseAdapter {
  209.  
  210.                 int mGalleryItemBackground;
  211.  
  212.  
  213.  
  214.                 // private ImageManager mImageManager;
  215.  
  216.  
  217.  
  218.                 public ImageAdapter(Context c) {
  219.  
  220.                         mContext = c;
  221.  
  222.                         // See res/values/attrs.xml for the that defines
  223.  
  224.                         // Gallery1.
  225.  
  226.                         TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
  227.  
  228.                         mGalleryItemBackground = a.getResourceId(
  229.  
  230.                                         R.styleable.Gallery1_android_galleryItemBackground, 0);
  231.  
  232.  
  233.  
  234.                         a.recycle();
  235.  
  236.                 }
  237.  
  238.  
  239.  
  240.                 public int getCount() {
  241.  
  242.                         return cursor.getCount();
  243.  
  244.                 }
  245.  
  246.  
  247.  
  248.                 public Object getItem(int position) {
  249.  
  250.                         return position;
  251.  
  252.                 }
  253.  
  254.  
  255.  
  256.                 public long getItemId(int position) {
  257.  
  258.                         return position;
  259.  
  260.                 }
  261.  
  262.  
  263.  
  264.                 public View getView(int position, View convertView, ViewGroup parent) {
  265.  
  266.                         ImageView i = new ImageView(mContext);
  267.  
  268.                         if (convertView == null) {
  269.  
  270.                                 cursor.moveToPosition(position);
  271.  
  272.                                 int id = cursor.getInt(column_index);
  273.  
  274.                                 // ImageView ix = new ImageView(mContext);
  275.  
  276.  
  277.  
  278.                                 i.setImageURI(Uri.withAppendedPath(
  279.  
  280.                                                 MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""
  281.  
  282.                                                                 + (id)));
  283.  
  284.                                 i.setScaleType(ImageView.ScaleType.FIT_XY);
  285.  
  286.                                 i.setLayoutParams(new Gallery.LayoutParams(204, 132));
  287.  
  288.                                 // The preferred Gallery item background
  289.  
  290.                                 i.setBackgroundResource(mGalleryItemBackground);
  291.  
  292.  
  293.  
  294.  
  295.  
  296.                         }
  297.  
  298.                         return i;
  299.  
  300.                 }
  301.  
  302.  
  303.  
  304.         }
  305.  
  306.  
  307.  
  308.         String filename;
  309.  
  310.  
  311.  
  312.         public class ThreadExt extends Thread {
  313.  
  314.                 public void run() {
  315.  
  316.                         try {
  317.  
  318.                                 Thread.sleep(300);
  319.  
  320.  
  321.  
  322.                         } catch (InterruptedException e) {
  323.  
  324.                                 e.printStackTrace();
  325.  
  326.                         }
  327.  
  328.                         // Now we want to actually get the data location of the file
  329.  
  330.                         String[] proj = { MediaStore.Images.Media.DATA };
  331.  
  332.                         // We request our cursor again
  333.  
  334.                         Cursor cursor = managedQuery(
  335.  
  336.                                         MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj, // Which
  337.  
  338.                                                                                                                                                 // columns
  339.  
  340.                                                                                                                                                 // to
  341.  
  342.                                                                                                                                                 // return
  343.  
  344.                                         null, // WHERE clause; which rows to return (all rows)
  345.  
  346.                                         null, // WHERE clause selection arguments (none)
  347.  
  348.                                         null); // Order-by clause (ascending by name)
  349.  
  350.                         // We want to get the column index for the data uri
  351.  
  352.                         column_index = cursor
  353.  
  354.                                         .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  355.  
  356.                         // Lets move to the selected item in the cursor
  357.  
  358.                         cursor.moveToPosition((int) g.getSelectedItemId());
  359.  
  360.  
  361.  
  362.  
  363.  
  364.                 }
  365.  
  366.         };
  367.  
  368.  
  369.  
  370.         private Handler handler = new Handler() {
  371.  
  372.                 public void handleMessage(Message msg) {
  373.  
  374.                         toast(filename);
  375.  
  376.  
  377.  
  378.                 }
  379.  
  380.         };
  381.  
  382.  
  383.  
  384. }
Parsed in 0.056 seconds, using GeSHi 1.0.8.4


/////////////////////////////////////////

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1.  
  2.  
  3.  
  4.  
  5.  
  6. <TableLayout
  7.  
  8.   xmlns:android="http://schemas.android.com/apk/res/android"
  9.  
  10.  
  11.  
  12.   android:layout_width="fill_parent"
  13.  
  14.   android:layout_height="fill_parent">
  15.  
  16.  
  17.  
  18.     <TextView
  19.  
  20.       android:layout_width="fill_parent"
  21.  
  22.       android:layout_height="wrap_content"
  23.  
  24.       android:text="Select an image and press convert" />
  25.  
  26.  
  27.  
  28.  
  29.  
  30.     <Gallery
  31.  
  32.       android:id="@+id/gallery"
  33.  
  34.       android:layout_width="fill_parent"
  35.  
  36.       android:layout_height="wrap_content"
  37.  
  38.       android:gravity="center_horizontal" />
  39.  
  40.        
  41.  
  42.        
  43.  
  44.  
  45.  
  46.        />
  47.  
  48.        
  49.  
  50.        
  51.  
  52.           <Button android:id="@+id/buttn" android:text="Convert" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
  53.  
  54.              
  55.  
  56.        
  57.  
  58.        <ImageView
  59.  
  60.       android:id="@+id/ibuttion"
  61.  
  62.       android:layout_width="fill_parent"
  63.  
  64.       android:layout_height="wrap_content"
  65.  
  66.       android:gravity="bottom"
  67.  
  68.      
  69.  
  70.       />
  71.  
  72.        
  73.  
  74. </TableLayout>
Parsed in 0.003 seconds, using GeSHi 1.0.8.4
zoalord12
Freshman
Freshman
 
Posts: 7
Joined: Mon Aug 17, 2009 1:43 am

Postby ezuall » Tue Aug 18, 2009 8:25 pm

Great to here that you got around the looping problem, but exactly how did you do that, is it because you are using a gallery instead of a gridview?
ezuall
Junior Developer
Junior Developer
 
Posts: 15
Joined: Sun Aug 16, 2009 10:27 pm

Top

Postby mad.dogg » Tue Aug 18, 2009 11:43 pm

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.        
  2.  
  3. public View getView(int position, View convertView, ViewGroup parent) {
  4.  
  5.           ImageView i;
  6.  
  7.           if (convertView == null) {
  8.  
  9.             i = new ImageView(mContext);
  10.  
  11.                cursor.moveToPosition(position);
  12.  
  13.                     int id = cursor.getInt(column_index);
  14.  
  15.                     i.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""+id));
  16.  
  17.                     i.setScaleType(ImageView.ScaleType.FIT_XY);
  18.  
  19.                     i.setLayoutParams(new GridView.LayoutParams(92, 92));
  20.  
  21.           }
  22.  
  23.           else
  24.  
  25.           {
  26.  
  27.             i=(ImageView)convertView;
  28.  
  29.           }
  30.  
  31.                return i;
  32.  
  33.         }
  34.  
  35.  
Parsed in 0.037 seconds, using GeSHi 1.0.8.4

Look at the "else" case, you just cast the view the adapter gave you and return it without setting its image as in the above case
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2.  i.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""+id));
Parsed in 0.035 seconds, using GeSHi 1.0.8.4
If it's boring it ain't heavy enough!
mad.dogg
Developer
Developer
 
Posts: 42
Joined: Tue May 20, 2008 2:18 pm
Location: Bulgaria

Postby zoalord12 » Wed Aug 19, 2009 5:52 pm

hey thanks man , that was a dumb mistake ... i thought the entire view with the imageURL came in if convert wasnt null
zoalord12
Freshman
Freshman
 
Posts: 7
Joined: Mon Aug 17, 2009 1:43 am

Postby mad.dogg » Wed Aug 19, 2009 9:45 pm

Glad I could help :)
If it's boring it ain't heavy enough!
mad.dogg
Developer
Developer
 
Posts: 42
Joined: Tue May 20, 2008 2:18 pm
Location: Bulgaria

Slow

Postby benbenbenben » Tue Oct 06, 2009 12:20 pm

Hello,

I tried the code above but it's very slow on my G1. I also tried the following code for a gridview but also very slow...

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2.  
  3.  
  4. public class ImageThumbnailsActivity extends Activity {
  5.  
  6.         /** Called when the activity is first created. */
  7.  
  8.         private Cursor imagecursor, actualimagecursor;
  9.  
  10.         private int image_column_index, actual_image_column_index;
  11.  
  12.         private GridView imagegrid;
  13.  
  14.         private int count;
  15.  
  16.         private static final String TAG = "ImageThumbnailsActivity";
  17.  
  18.  
  19.  
  20.         @Override
  21.  
  22.         public void onCreate(Bundle savedInstanceState) {
  23.  
  24.                 super.onCreate(savedInstanceState);
  25.  
  26.                 setContentView(R.layout.main);
  27.  
  28.                 init_phone_image_grid();
  29.  
  30.         }
  31.  
  32.  
  33.  
  34.         private void init_phone_image_grid() {
  35.  
  36.                
  37.  
  38.                 String[] img = { MediaStore.Images.Thumbnails._ID };
  39.  
  40.                
  41.  
  42.                 imagecursor = managedQuery(
  43.  
  44.                                 MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, img, null,
  45.  
  46.                                 null, MediaStore.Images.Thumbnails.IMAGE_ID);
  47.  
  48.                
  49.  
  50.                 Log.v(TAG, "EXTERNAL_C "+MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI);
  51.  
  52.                
  53.  
  54.  
  55.  
  56.                 image_column_index = imagecursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
  57.  
  58.                
  59.  
  60.                 Log.v(TAG, "COUNT= " + count);
  61.  
  62.                 imagegrid = (GridView) findViewById(R.id.PhoneImageGrid);
  63.  
  64.                
  65.  
  66.                
  67.  
  68.                 imagegrid.setAdapter(new ImageAdapter(this));
  69.  
  70.                
  71.  
  72.         }
  73.  
  74.  
  75.  
  76.         public class ImageAdapter extends BaseAdapter {
  77.  
  78.                 private Context mContext;
  79.  
  80.  
  81.  
  82.                 public ImageAdapter(Context c) {
  83.  
  84.                         mContext = c;
  85.  
  86.                 }
  87.  
  88.  
  89.  
  90.                 public int getCount() {
  91.  
  92.                         return imagecursor.getCount();
  93.  
  94.                 }
  95.  
  96.  
  97.  
  98.                 public Object getItem(int position) {
  99.  
  100.                         return position;
  101.  
  102.                 }
  103.  
  104.  
  105.  
  106.                 public long getItemId(int position) {
  107.  
  108.                         return position;
  109.  
  110.                 }
  111.  
  112.  
  113.  
  114.                 public View getView(int position, View convertView, ViewGroup parent) {
  115.  
  116.  
  117.  
  118.                         imagecursor.moveToPosition(position);
  119.  
  120.                         int id = imagecursor.getInt(image_column_index);
  121.  
  122.                        
  123.  
  124.                         ImageView i;
  125.  
  126.                         if (convertView == null){
  127.  
  128.                 i = new ImageView(mContext);
  129.  
  130.                 i.setLayoutParams(new GridView.LayoutParams(92, 92));
  131.  
  132.                 i.setAdjustViewBounds(false);
  133.  
  134.                 i.setScaleType(ImageView.ScaleType.CENTER_CROP);
  135.  
  136.                 i.setPadding(2, 2, 2, 2);
  137.  
  138.                 Log.v(TAG, "image1");
  139.  
  140.                         }else {
  141.  
  142.                                 i = (ImageView) convertView;
  143.  
  144.                                 Log.v(TAG, "image2");
  145.  
  146.                         }
  147.  
  148.                         i.setImageURI(Uri.withAppendedPath(
  149.  
  150.                                         MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""
  151.  
  152.                                                         + id));
  153.  
  154.                         return i;
  155.  
  156.                 }
  157.  
  158.         }
  159.  
  160. }
Parsed in 0.044 seconds, using GeSHi 1.0.8.4


It seems that it hangs at the "setImageURI(...)" method.

Is it possible to use the standard gallery from my G1 for development?

Thanks in advance!
benbenbenben
Freshman
Freshman
 
Posts: 2
Joined: Mon Oct 05, 2009 1:52 pm

Top

Return to View, Layout & Resource Problems

Who is online

Users browsing this forum: Google [Bot] and 4 guests