0

I give description of My project

In my project In the first section i have parsed the xml data of Video categories and image url links from My web service.I have parsed that data and receive that data in ArrayList in My main activity.The first ArrayList is the list of video categories and the second ArrayList is the the list of video image urls and i have to display ArrayList of image urls as ImageView in ListView ,i have no idea for that,please give me some solution.

Cristian
  • 198,401
  • 62
  • 356
  • 264
  • Try my sample http://stackoverflow.com/questions/541966/android-how-do-i-do-a-lazy-load-of-images-in-listview/3068012#3068012 – Fedor Nov 18 '10 at 14:23
  • thanx fedor for ur reply but it is too complex to understand – Bindal Kadakia Nov 19 '10 at 06:02
  • I'm afraid it can't be done easier. You can just reuse my ImageLoader class without understanding everything inside it. – Fedor Nov 19 '10 at 06:50

1 Answers1

1

In order to handle something else than an Array of String displayed as TextView in a ListView, you need to write your own Custom Adapter (so Android knows how to display those items)

Here is an example:

Your Activity:

public class MyActivity extends Activity{
    private ArrayList<URL> MY_DATA;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Sets the View of the Activity
        setContentView(R.layout.my_activity);
        ListView myList = (ListView) findViewById(R.id.myList);
        MyAdapter adapter = new MyAdapter(this, MY_DATA);
        listView.setAdapter(adapter);
}

Your Activity's Layout (my_activity.xml here):

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myList"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>

And your custom Adapter:

public class MyAdapter extends BaseAdapter{
    private LayoutInflater inflater;
    private ArrayList<URL> data;

    public EventAdapter(Context context, ArrayList<URL> data){
    // Caches the LayoutInflater for quicker use
    this.inflater = LayoutInflater.from(context);
    // Sets the events data
    this.data= data;
    }

    public int getCount() {
        return this.data.size();
    }

    public URL getItem(int position) throws IndexOutOfBoundsException{
        return this.data.get(position);
    }

    public long getItemId(int position) throws IndexOutOfBoundsException{
        if(position < getCount() && position >= 0 ){
            return position;
        }
    }

    public int getViewTypeCount(){
        return 1;
    }

    public View getView(int position, View convertView, ViewGroup parent){
        URL myUrl = getItem(position);
        ViewHolder holder = new ViewHolder(); // Use a ViewHolder to save your ImageView, in order not to have to do an expensive findViewById for each iteration

        // DO WHAT YOU WANT WITH YOUR URL (Start a new activity to download image?)

        if(convertView == null){ // If the View is not cached
        // Inflates the Common View from XML file
        convertView = this.inflater.inflate(R.id.my_row_layout, null);
            holder.myImageView = (ImageView)findViewById(R.id.myRowImageView);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }

        holder.myImageView.setImageBitmap(MY_BITMAP_I_JUST_DOWNLOADED);

        return convertView;
    }

    static class ViewHolder{
    ImageView myImageView;
    }
}

And finally your row's layout (my_row_layout.xml here):

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myRowImageView"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
nbarraille
  • 9,926
  • 14
  • 65
  • 92