Mehmet Ethem SULAN :: Android :: How to load internet images in GridView Android sample

Android içinde GridView resimleri hücre sisteminde sıralıyor. Özellikle Image URLelerini internetten çekmek bazen çok yararlı oluyor. Aynı şekilde oluşturulan Gallery örneğine bakabilirsiniz. Normalde res/drawable altında da imageleri atıp ve listeye R.idrawable.imageIsmi şeklinde de ekleyip kullanabilirsiniz. Mesela albüm resimleri listelenir ve tıklandığında o albüme ait music listesi açma gibi yerlede kullanışlıdır. AndroidManifest.xml içinde tanımlanan

android:numColumns="auto_fit"

imagelerin sütunlara sığacak şeklilde ayarlıyor.

gridview


MyGridView.java

package com.gridview.sample;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;

public class MyGridView extends Activity {
    private GridView girGridView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        girGridView=(GridView) findViewById(R.id.gridView1_bir);
//ListView gibi buna da adapter set ediliyor.
        girGridView.setAdapter(new ImageAdapter(this));

        girGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View view, int position,long arg3) {
				Toast.makeText(getApplicationContext(), GridViewConfig.getResim_list().get(position), Toast.LENGTH_SHORT).show();
			}
		});
    }
}

ImageAdapter.java

package com.gridview.sample;

import java.io.InputStream;
import java.net.URI;
import java.net.URL;

import android.R.integer;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListAdapter;

public class ImageAdapter extends BaseAdapter implements ListAdapter {

	private Context context;
	public ImageAdapter(Context context) {
		super();
		this.context = context;
//Listeye image url si ekliyor
		GridViewConfig.addImageUrls();
	}

	@Override
	public int getCount() {
		return GridViewConfig.getResim_list().size();
	}

	@Override
	public Object getItem(int position) {

		return GridViewConfig.getResim_list().get(position);
	}

	@Override
	public long getItemId(int position) {

		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ImageView imageView;
		if(convertView==null)
		{
			imageView=new ImageView(context);
			imageView.setLayoutParams(new GridView.LayoutParams(100,100));
			imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
			imageView.setPadding(5,5,5,5);
		}else{
			imageView=(ImageView)convertView;
		}
		imageView.setImageDrawable(LoadImageFromURL(GridViewConfig.getResim_list().get(position)));
		return imageView;
	}

//Internetten imageleri stream olarak  cekip drawable olsurturuyor.
	private Drawable LoadImageFromURL(String url)
	{
	try
	{
	InputStream is = (InputStream) new URL(url).getContent();
	Drawable d = Drawable.createFromStream(is, "src");
	return d;
	}catch (Exception e) {
	System.out.println(e);
	return null;
	}
	}

}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">
    <GridView
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:id="@+id/gridView1_bir">
    </GridView>
</LinearLayout>

GridViewConfig.java

package com.gridview.sample;

import java.util.ArrayList;

public class GridViewConfig {
	private static ArrayList<String> resim_list=new ArrayList<String>();

	public static ArrayList<String> getResim_list() {
		return resim_list;
	}

	public static void setResim_list(ArrayList<String> resim_list) {
		GridViewConfig.resim_list = resim_list;
	}

	public static void addImageUrls(){
		resim_list.add("http://www.ethemsulan.com/wp-content/uploads/ara.png");
		resim_list.add("http://www.ethemsulan.com/wp-content/uploads/cikti5.png");
		resim_list.add("http://www.minare.net/wp-content/uploads/2011/01/android_ipod_touch_4.jpg");
		resim_list.add("http://blog.fommy.com/wp-content/uploads/2008/10/android-wallpaper1_1024x768.png");
		resim_list.add("http://www.buynetbookcomputer.com/android-netbook-images/android-netbook-big.jpg");
		resim_list.add("http://www.sharepointhoster.com/wp-content/uploads/2011/03/android_apps.jpeg");
		resim_list.add("http://www.ethemsulan.com/wp-content/uploads/customList.png");
		resim_list.add("http://www.ethemsulan.com/wp-content/uploads/handler.png");
		resim_list.add("http://www.ethemsulan.com/wp-content/uploads/xml.png");
		resim_list.add("http://www.ethemsulan.com/wp-content/uploads/progessbar.png");

	}
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.gridview.sample"
      android:versionCode="1"
      android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MyGridView"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

Download GridViewSample.tar.gz

Comments

There are 3 comments for this post.

  1. Mehmet Ethem SULAN :: Android :: Android Load Image From URL in Gallery Example on Mayıs 15, 2011 5:12 pm

    [...] ile verilen bir Image URLsini Gallerye eklemeye çalıştım. Daha iyi anlamak için Gridview örneğine bakın. Internet erişim izni vermeyi [...]

  2. Eugene Smith on Kasım 2, 2011 11:55 pm

    Useless, should use AsyncTask

  3. Arun on Mart 17, 2012 5:07 am

    Nice tutorial….

Write a Comment

Let me know what you think?