Hello,

I want to add icons to my multiple choice ListView. So far I've done
the folllowing:
My own layout file:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/
android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ImageView android:id="@+id/icon"
        android:layout_width="28dip"
        android:layout_height="28dip" />

     <CheckedTextView xmlns:android="http://schemas.android.com/apk/
res/android"
    android:id="@+id/text"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:paddingLeft="6dip"
    android:paddingRight="6dip" />
</LinearLayout>

And my own Adapter:

private static class EfficientAdapter extends BaseAdapter {
        private LayoutInflater mInflater;
        private Bitmap mIcon;

        public EfficientAdapter(Context context) {
            // Cache the LayoutInflate to avoid asking for a new one
each time.
            mInflater = LayoutInflater.from(context);

            // Icon bound to the row.
            mIcon = BitmapFactory.decodeResource(context.getResources
(), R.drawable.xxx);
        }

        /**
         * The number of items in the list is determined by the number
of speeches
         * in our array.
         *
         * @see android.widget.ListAdapter#getCount()
         */
        public int getCount() {
//            return DATA.length;
            return mCurrencyNames.length;
        }

        /**
         * Since the data comes from an array, just returning the
index is
         * sufficent to get at the data. If we were using a more
complex data
         * structure, we would return whatever object represents one
row in the
         * list.
         *
         * @see android.widget.ListAdapter#getItem(int)
         */
        public Object getItem(int position) {
            return position;
        }

        /**
         * Use the array index as a unique id.
         *
         * @see android.widget.ListAdapter#getItemId(int)
         */
        public long getItemId(int position) {
            return position;
        }

        /**
         * Make a view to hold each row.
         *
         * @see android.widget.ListAdapter#getView(int,
android.view.View,
         *      android.view.ViewGroup)
         */
        public View getView(int position, View convertView, ViewGroup
parent) {
            // A ViewHolder keeps references to children views to
avoid unneccessary calls
            // to findViewById() on each row.
            ViewHolder holder;

            // When convertView is not null, we can reuse it directly,
there is no need
            // to reinflate it. We only inflate a new View when the
convertView supplied
            // by ListView is null.
            if (convertView == null) {
                convertView = mInflater.inflate
(R.layout.list_item_icon_text, null);

                // Creates a ViewHolder and store references to the
two children views
                // we want to bind data to.
                holder = new ViewHolder();
                holder.text = (TextView) convertView.findViewById
(R.id.text);
                holder.icon = (ImageView) convertView.findViewById
(R.id.icon);

                convertView.setTag(holder);
            } else {
                // Get the ViewHolder back to get fast access to the
TextView
                // and the ImageView.
                holder = (ViewHolder) convertView.getTag();
            }

            // Bind the data efficiently with the holder.
            holder.text.setText(mCurrencyNames[position]);
            holder.icon.setImageBitmap(mIcon);

            return convertView;
        }

        static class ViewHolder {
            TextView text;
            ImageView icon;
        }
    }

Looks quite good. Everything is diplayed the way I want it, but I
can't check/uncheck anything in my ListView. Is there a special method
I have to implement in my Adapter? Or am I doing it the wrong way? Is
there maybe an easier way to do what I want?

Thanks in advance vor any help.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to