I have a spinner with a checkbox in it, here is the XML for the item:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android";
                     android:layout_width="fill_parent"

 android:layout_height="?android:attr/listPreferredItemHeight"
                     android:padding="10dp">
    <CheckBox android:id="@+id/chkBox"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:text="Folder name"
                android:textColor="@color/black"
                android:soundEffectsEnabled="true"/>
</RelativeLayout>

Here is the adapter code:

    public class spAdapter extends BaseAdapter implements OnClickListener {
        private ArrayList<String> m_arySelItems = new ArrayList<String>();
        private LayoutInflater m_layoutInfater;
        private ArrayList<String> m_aryFolders;

        public spAdapter(Context context,
                            int textViewResourceId,
                            ArrayList<String> aryFolders) {
            m_aryFolders     = aryFolders;
            m_layoutInfater =
(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        public void add(String item) {
            m_aryFolders.add(item);
        }

        public void clear() {
            m_aryFolders.clear();
        }

        public int getCount() {
            return m_aryFolders.size();
        }

        public Object getItem(int position) {
            return position;
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position,
                            View convertView,
                            ViewGroup parent) {
            View vi = convertView;

            try{
// Get the Actual Image from the Array
                String strFolder = m_aryFolders.get(position);

                if ( vi == null ) {
                    vi = m_layoutInfater.inflate(R.layout.spfolders, null);
                }
                CheckBox chkBox = (CheckBox)vi.findViewById(R.id.chkBox);
                chkBox.setText(strFolder);
                chkBox.setTag(strFolder);

                if ( m_arySelItems.contains(strFolder) ) {
                    chkBox.setChecked(true);
                }
                chkBox.setOnClickListener(this);
            } catch( Exception ex ) {
                Log.e( TAG, ex.getMessage() );
            }
            return vi;
        }

        @Override
        public void onClick(View v) {
            CheckBox chkBox = (CheckBox)v;
            String strFolder = (String)chkBox.getTag();

            if ( chkBox.isChecked() ) {
                if ( m_arySelItems.contains(strFolder) == false ) {
                    m_arySelItems.add(strFolder);
                }
            } else {
                if ( m_arySelItems.contains(strFolder) == true ) {
                    m_arySelItems.remove(strFolder);
                }
            }
        }
    }

I've done something wrong in the getView, something is missing because when
I scroll off view, any selections get mixed up.  Is there a good example /
tutorial where I can find out how to implement this correctly?

Thank you,

-- 
Regards,
Sy

-- 
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