3

I have set a gridview for image url..I can't able to see the image in grid.. Just shows the background...and on click the grid plays in next screen.

What im doing wrong? How to implement this?

Thanks a lot in advance

my code

    public class act extends Activity {
static  String uri1="https://i3.ytimg.com/vi/bQaWsVQSLdY/default.jpg";
static String uri2="https://i4.ytimg.com/vi/cJQCniWQdno/mqdefault.jpg";
static String uri3="https://i1.ytimg.com/vi/D8dA4pE5hEY/mqdefault.jpg";
public static String[] urls={uri1,uri2,uri3};
public Bitmap bitmap;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    GridView grd=(GridView)findViewById(R.id.gridView1);
    grd.setAdapter(new ImageAdapter(this));
    grd.setOnItemClickListener(new OnItemClickListener()
    {
    public void onItemClick(AdapterView<?> parent,View v,int pos,long id)
    {
        Toast.makeText(getBaseContext(),"pic"+(pos+1)+"select ",Toast.LENGTH_SHORT).show();
    }
    });
}
public class ImageAdapter extends BaseAdapter
{
    private Context context;
    private int itemBackground;
    ImageAdapter(Context c)
    {
    context=c;
    TypedArray a=obtainStyledAttributes(R.styleable.Gallery1);
    itemBackground=a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground,0);
    a.recycle();
    }
    public int getCount()
    {
        return urls.length;
    }
    public Object getItem(int pos)
    {
        return pos;
    }
    public long getItemId(int pos)
    {
        return pos;
    }
    public View getView(int pos,View cv,ViewGroup vg)
    {
Bitmap bitmap=  DownloadImage( urls[pos] );
ImageView imageview=new ImageView(context);
imageview.setImageBitmap(bitmap);
return cv;    
    }
private Bitmap DownloadImage(String URL)
    {        
        final String URL1=URL;       
        new Thread()
        {
            public void run()
            {               
                InputStream in = null;  
                Message msg = Message.obtain();
                msg.what = 1;
                try {
                    in = OpenHttpConnection(URL1);
                    Bitmap bitmap = BitmapFactory.decodeStream(in);     
                    Bundle b = new Bundle();
                    b.putParcelable("bitmap", bitmap);
                    msg.setData(b);
                    in.close();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }.start();
        return bitmap;
    }
    private InputStream OpenHttpConnection(String urlString)
            throws IOException
            {
                InputStream in = null;
                int response = -1;
                URL url = new URL(urlString);
                URLConnection conn = url.openConnection();
                if (!(conn instanceof HttpURLConnection))                    
                    throw new IOException("Not an HTTP connection");
                try{
                    HttpURLConnection httpConn = (HttpURLConnection) conn;
                    httpConn.setAllowUserInteraction(false);
                    httpConn.setInstanceFollowRedirects(true);
                    httpConn.setRequestMethod("GET");
                    httpConn.connect();
                    response = httpConn.getResponseCode();                
                    if (response == HttpURLConnection.HTTP_OK) 
                    {
                        in = httpConn.getInputStream();                                
                    }                    
                }
                catch (Exception ex)
                {
                    throw new IOException("Error connecting");            
                }
                return in;    
    }
}
}

logcat

     E/AndroidRuntime(832): java.lang.NullPointerException
       E/AndroidRuntime(832):   at android.widget.GridView.onMeasure(GridView.java:937)
        E/AndroidRuntime(832):  at android.view.View.measure(View.java:8313)
       E/AndroidRuntime(832):   at 
       android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
       E/AndroidRuntime(832):   at 
       android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017)
        E/AndroidRuntime(832):  at 
        android.widget.LinearLayout.measureVertical(LinearLayout.java:386)
         E/AndroidRuntime(832):     at 
        android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
         E/AndroidRuntime(832):     at android.view.View.measure(View.java:8313)
         E/AndroidRuntime(832):     at 
         android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
          E/AndroidRuntime(832):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
         E/AndroidRuntime(832):     at android.view.View.measure(View.java:8313)
         E/AndroidRuntime(832):     at 
          android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
          E/AndroidRuntime(832):    at 
          android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
          E/AndroidRuntime(832):    at android.view.View.measure(View.java:8313)
          E/AndroidRuntime(832):    at 
          android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
          E/AndroidRuntime(832):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
          E/AndroidRuntime(832):    at android.view.View.measure(View.java:8313)
          E/AndroidRuntime(832):    at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
          E/AndroidRuntime(832):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
          E/AndroidRuntime(832):    at android.os.Handler.dispatchMessage(Handler.java:99)
           E/AndroidRuntime(832):   at android.os.Looper.loop(Looper.java:123)
           E/AndroidRuntime(832):   at android.app.ActivityThread.main(ActivityThread.java:3683)
           E/AndroidRuntime(832):   at java.lang.reflect.Method.invokeNative(Native Method)
           E/AndroidRuntime(832):   at java.lang.reflect.Method.invoke(Method.java:507)
           E/AndroidRuntime(832):   at 
           com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
            E/AndroidRuntime(832):  at 
           com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
            E/AndroidRuntime(832):  at dalvik.system.NativeStart.main(Native Method)
Make it Simple
  • 1,832
  • 5
  • 32
  • 57

3 Answers3

2

Try replacing your getView() with this and let me know the result:

public class ImageAdapter extends BaseAdapter
{
    private Context context;
    private int itemBackground;
    public ImageLoader imageLoader; 

    ImageAdapter(Context c)
    {
    context=c;
    TypedArray a=obtainStyledAttributes(R.styleable.Gallery1);
    itemBackground=a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground,0);
    a.recycle();
    imageLoader=new ImageLoader(context);
    }
    public int getCount()
    {
        return urls.length;
    }
    public Object getItem(int pos)
    {
        return pos;
    }
    public long getItemId(int pos)
    {
        return pos;
    }
      public View getView(int position, View convertView, ViewGroup parent)
    {
       ImageView imageView;
             if (convertView == null) {
               imageView = new ImageView(context);
               imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
               imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
               imageView.setPadding(2, 2, 2, 2);
    } else {
             imageView = (ImageView) convertView;
    }

       imageLoader.DisplayImage(urls[position], imageView)
       return imageView;
    }

}
Kanth
  • 6,681
  • 3
  • 29
  • 41
1

This is the code i tried ..Images are displaying..You customize the grid view as your need.You just copy and paste the below code in your activity and try..

public class MainActivity extends Activity {

    static  String uri1="http://i3.ytimg.com/vi/bQaWsVQSLdY/default.jpg";
    static String uri2="http://i4.ytimg.com/vi/cJQCniWQdno/mqdefault.jpg";
    static String uri3="http://i1.ytimg.com/vi/D8dA4pE5hEY/mqdefault.jpg";
    public static String[] urls={uri1,uri2,uri3};
//  public Bitmap bitmap;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        GridView grd=(GridView)findViewById(R.id.gridview1);
        grd.setAdapter(new ImageAdapter(this));


    }
    public class ImageAdapter extends BaseAdapter
    {
        private Context context;
        private int itemBackground;
        ImageAdapter(Context c)
        {
        context=c;    
        }
        public int getCount()
        {
            return urls.length;
        }
        public Object getItem(int pos)
        {
            return pos;
        }
        public long getItemId(int pos)
        {
            return pos;
        }

    private Bitmap DownloadImage(String URL)
        {        
             String URL1=URL; 
             Bitmap bitmap = null;
//          new Thread()
//          {
//              public void run()
//              {               
                    InputStream in = null;  
                    Message msg = Message.obtain();
                    msg.what = 1;
                    try {
                        in = OpenHttpConnection(URL1);
                        bitmap = BitmapFactory.decodeStream(in);     
                        Bundle b = new Bundle();
                        b.putParcelable("bitmap", bitmap);
                        msg.setData(b);
                        in.close();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
//              }
//          }.start();
            return bitmap;
        }
        private InputStream OpenHttpConnection(String urlString)
                throws IOException
                {
//          System.out.println("Insdie conn");
                    InputStream in = null;
                    int response = -1;
                    URL url = new URL(urlString);
                    URLConnection conn = url.openConnection();
                    if (!(conn instanceof HttpURLConnection))                    
                        throw new IOException("Not an HTTP connection");
                    try{
//                      System.out.println("Inside try");
                        HttpURLConnection httpConn = (HttpURLConnection) conn;
                        httpConn.setAllowUserInteraction(false);
                        httpConn.setInstanceFollowRedirects(true);
//                      httpConn.setRequestMethod("GET");
                        httpConn.connect();
                        response = httpConn.getResponseCode();  
//                      System.out.println("res="+response);
//                      System.out.println("cccccc="+HttpURLConnection.HTTP_OK);
                        if (response == HttpURLConnection.HTTP_OK) 
                        {
//                          System.out.println("Inside if");
                            in = httpConn.getInputStream();                                
                        }                    
                    }
                    catch (Exception ex)
                    {
                        throw new IOException("Error connecting");            
                    }
                    return in;    
        }
        @Override
        public View getView(int position, View cv, ViewGroup parent) 
        {
            ImageView imageview = null;
//          System.out.println("vvvv="+urls[position]);
            Bitmap bitmap=  DownloadImage( urls[position] );        
            // TODO Auto-generated method stub
            if(cv == null)
            {
//              cv=LayoutInflater.from(parent.getContext()).inflate(R.layout.gridviewitem, null);
                imageview =  new ImageView(context);
            }
            else 
            {
                imageview = (ImageView) cv;
            }

            imageview.setImageBitmap(bitmap);
            return imageview;    
        }
    }
Subburaj
  • 5,114
  • 10
  • 44
  • 87
0

Here Is Example of GridView With ImageLoading

Edited:

noting is wrong in you code. but you are tying to show image from server(online its not in you application resources or in sdcard, gallery etc..) thats why its not showing in your GridView. so, you have to download that images from server. after that you have to show them in GridView. i have give you link above how to download images and show them in GridView.

Dhaval Parmar
  • 18,812
  • 8
  • 82
  • 177