197850c066b3eccdabecdd5f424735883661c12edMick Lin/*
297850c066b3eccdabecdd5f424735883661c12edMick Lin* Copyright (C) 2011-2014 The Android Open Source Project.
397850c066b3eccdabecdd5f424735883661c12edMick Lin*
497850c066b3eccdabecdd5f424735883661c12edMick Lin* Licensed under the Apache License, Version 2.0 (the "License");
597850c066b3eccdabecdd5f424735883661c12edMick Lin* you may not use this file except in compliance with the License.
697850c066b3eccdabecdd5f424735883661c12edMick Lin* You may obtain a copy of the License at
797850c066b3eccdabecdd5f424735883661c12edMick Lin*
897850c066b3eccdabecdd5f424735883661c12edMick Lin*      http://www.apache.org/licenses/LICENSE-2.0
997850c066b3eccdabecdd5f424735883661c12edMick Lin*
1097850c066b3eccdabecdd5f424735883661c12edMick Lin* Unless required by applicable law or agreed to in writing, software
1197850c066b3eccdabecdd5f424735883661c12edMick Lin* distributed under the License is distributed on an "AS IS" BASIS,
1297850c066b3eccdabecdd5f424735883661c12edMick Lin* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1397850c066b3eccdabecdd5f424735883661c12edMick Lin* See the License for the specific language governing permissions and
1497850c066b3eccdabecdd5f424735883661c12edMick Lin* limitations under the License.
1597850c066b3eccdabecdd5f424735883661c12edMick Lin*/
1697850c066b3eccdabecdd5f424735883661c12edMick Lin
1797850c066b3eccdabecdd5f424735883661c12edMick Linpackage com.android.internal.widget;
1897850c066b3eccdabecdd5f424735883661c12edMick Lin
1997850c066b3eccdabecdd5f424735883661c12edMick Linimport android.content.Context;
2097850c066b3eccdabecdd5f424735883661c12edMick Linimport android.graphics.drawable.Drawable;
2197850c066b3eccdabecdd5f424735883661c12edMick Linimport android.view.View;
2297850c066b3eccdabecdd5f424735883661c12edMick Linimport android.view.ViewGroup;
2397850c066b3eccdabecdd5f424735883661c12edMick Linimport android.widget.BaseAdapter;
2497850c066b3eccdabecdd5f424735883661c12edMick Lin
2597850c066b3eccdabecdd5f424735883661c12edMick Linimport java.util.List;
2697850c066b3eccdabecdd5f424735883661c12edMick Lin
2797850c066b3eccdabecdd5f424735883661c12edMick Linpublic class AccountViewAdapter extends BaseAdapter {
2897850c066b3eccdabecdd5f424735883661c12edMick Lin
2997850c066b3eccdabecdd5f424735883661c12edMick Lin    private List<AccountElements> mData;
3097850c066b3eccdabecdd5f424735883661c12edMick Lin    private Context mContext;
3197850c066b3eccdabecdd5f424735883661c12edMick Lin
3297850c066b3eccdabecdd5f424735883661c12edMick Lin    /**
3397850c066b3eccdabecdd5f424735883661c12edMick Lin     * Constructor
3497850c066b3eccdabecdd5f424735883661c12edMick Lin     *
3597850c066b3eccdabecdd5f424735883661c12edMick Lin     * @param context The context where the View associated with this Adapter is running
3697850c066b3eccdabecdd5f424735883661c12edMick Lin     * @param data A list with AccountElements data type. The list contains the data of each
3797850c066b3eccdabecdd5f424735883661c12edMick Lin     *         account and the each member of AccountElements will correspond to one item view.
3897850c066b3eccdabecdd5f424735883661c12edMick Lin     */
3997850c066b3eccdabecdd5f424735883661c12edMick Lin    public AccountViewAdapter(Context context, final List<AccountElements> data) {
4097850c066b3eccdabecdd5f424735883661c12edMick Lin        mContext = context;
4197850c066b3eccdabecdd5f424735883661c12edMick Lin        mData = data;
4297850c066b3eccdabecdd5f424735883661c12edMick Lin    }
4397850c066b3eccdabecdd5f424735883661c12edMick Lin
4497850c066b3eccdabecdd5f424735883661c12edMick Lin    @Override
4597850c066b3eccdabecdd5f424735883661c12edMick Lin    public int getCount() {
4697850c066b3eccdabecdd5f424735883661c12edMick Lin        return mData.size();
4797850c066b3eccdabecdd5f424735883661c12edMick Lin    }
4897850c066b3eccdabecdd5f424735883661c12edMick Lin
4997850c066b3eccdabecdd5f424735883661c12edMick Lin    @Override
5097850c066b3eccdabecdd5f424735883661c12edMick Lin    public Object getItem(int position) {
5197850c066b3eccdabecdd5f424735883661c12edMick Lin        return mData.get(position);
5297850c066b3eccdabecdd5f424735883661c12edMick Lin    }
5397850c066b3eccdabecdd5f424735883661c12edMick Lin
5497850c066b3eccdabecdd5f424735883661c12edMick Lin    @Override
5597850c066b3eccdabecdd5f424735883661c12edMick Lin    public long getItemId(int position) {
5697850c066b3eccdabecdd5f424735883661c12edMick Lin        return position;
5797850c066b3eccdabecdd5f424735883661c12edMick Lin    }
5897850c066b3eccdabecdd5f424735883661c12edMick Lin
5997850c066b3eccdabecdd5f424735883661c12edMick Lin    public void updateData(final List<AccountElements> data) {
6097850c066b3eccdabecdd5f424735883661c12edMick Lin        mData = data;
6197850c066b3eccdabecdd5f424735883661c12edMick Lin        notifyDataSetChanged();
6297850c066b3eccdabecdd5f424735883661c12edMick Lin    }
6397850c066b3eccdabecdd5f424735883661c12edMick Lin
6497850c066b3eccdabecdd5f424735883661c12edMick Lin    @Override
6597850c066b3eccdabecdd5f424735883661c12edMick Lin    public View getView(int position, View convertView, ViewGroup parent) {
6697850c066b3eccdabecdd5f424735883661c12edMick Lin        AccountItemView view;
6797850c066b3eccdabecdd5f424735883661c12edMick Lin        if (convertView == null) {
6897850c066b3eccdabecdd5f424735883661c12edMick Lin            view = new AccountItemView(mContext);
6997850c066b3eccdabecdd5f424735883661c12edMick Lin        } else {
7097850c066b3eccdabecdd5f424735883661c12edMick Lin            view = (AccountItemView) convertView;
7197850c066b3eccdabecdd5f424735883661c12edMick Lin        }
7297850c066b3eccdabecdd5f424735883661c12edMick Lin        AccountElements elements = (AccountElements) getItem(position);
7397850c066b3eccdabecdd5f424735883661c12edMick Lin        view.setViewItem(elements);
7497850c066b3eccdabecdd5f424735883661c12edMick Lin        return view;
7597850c066b3eccdabecdd5f424735883661c12edMick Lin    }
7697850c066b3eccdabecdd5f424735883661c12edMick Lin
7797850c066b3eccdabecdd5f424735883661c12edMick Lin    public static class AccountElements {
7897850c066b3eccdabecdd5f424735883661c12edMick Lin        private int mIcon;
7997850c066b3eccdabecdd5f424735883661c12edMick Lin        private Drawable mDrawable;
8097850c066b3eccdabecdd5f424735883661c12edMick Lin        private String mName;
8197850c066b3eccdabecdd5f424735883661c12edMick Lin        private String mNumber;
8297850c066b3eccdabecdd5f424735883661c12edMick Lin
8397850c066b3eccdabecdd5f424735883661c12edMick Lin        /**
8497850c066b3eccdabecdd5f424735883661c12edMick Lin         * Constructor
8597850c066b3eccdabecdd5f424735883661c12edMick Lin         * A structure with basic element of an Account, icon, name and number
8697850c066b3eccdabecdd5f424735883661c12edMick Lin         *
8797850c066b3eccdabecdd5f424735883661c12edMick Lin         * @param icon Account icon id
8897850c066b3eccdabecdd5f424735883661c12edMick Lin         * @param name Account name
8997850c066b3eccdabecdd5f424735883661c12edMick Lin         * @param num Account number
9097850c066b3eccdabecdd5f424735883661c12edMick Lin         */
9197850c066b3eccdabecdd5f424735883661c12edMick Lin        public AccountElements(int icon, String name, String number) {
9297850c066b3eccdabecdd5f424735883661c12edMick Lin            this(icon, null, name, number);
9397850c066b3eccdabecdd5f424735883661c12edMick Lin        }
9497850c066b3eccdabecdd5f424735883661c12edMick Lin
9597850c066b3eccdabecdd5f424735883661c12edMick Lin        /**
9697850c066b3eccdabecdd5f424735883661c12edMick Lin         * Constructor
9797850c066b3eccdabecdd5f424735883661c12edMick Lin         * A structure with basic element of an Account, drawable, name and number
9897850c066b3eccdabecdd5f424735883661c12edMick Lin         *
9997850c066b3eccdabecdd5f424735883661c12edMick Lin         * @param drawable Account drawable
10097850c066b3eccdabecdd5f424735883661c12edMick Lin         * @param name Account name
10197850c066b3eccdabecdd5f424735883661c12edMick Lin         * @param num Account number
10297850c066b3eccdabecdd5f424735883661c12edMick Lin         */
10397850c066b3eccdabecdd5f424735883661c12edMick Lin        public AccountElements(Drawable drawable, String name, String number) {
10497850c066b3eccdabecdd5f424735883661c12edMick Lin            this(0, drawable, name, number);
10597850c066b3eccdabecdd5f424735883661c12edMick Lin        }
10697850c066b3eccdabecdd5f424735883661c12edMick Lin
10797850c066b3eccdabecdd5f424735883661c12edMick Lin        private AccountElements(int icon, Drawable drawable, String name, String number) {
10897850c066b3eccdabecdd5f424735883661c12edMick Lin            mIcon = icon;
10997850c066b3eccdabecdd5f424735883661c12edMick Lin            mDrawable = drawable;
11097850c066b3eccdabecdd5f424735883661c12edMick Lin            mName = name;
11197850c066b3eccdabecdd5f424735883661c12edMick Lin            mNumber = number;
11297850c066b3eccdabecdd5f424735883661c12edMick Lin        }
11397850c066b3eccdabecdd5f424735883661c12edMick Lin
11497850c066b3eccdabecdd5f424735883661c12edMick Lin        public int getIcon() {
11597850c066b3eccdabecdd5f424735883661c12edMick Lin            return mIcon;
11697850c066b3eccdabecdd5f424735883661c12edMick Lin        }
11797850c066b3eccdabecdd5f424735883661c12edMick Lin        public String getName() {
11897850c066b3eccdabecdd5f424735883661c12edMick Lin            return mName;
11997850c066b3eccdabecdd5f424735883661c12edMick Lin        }
12097850c066b3eccdabecdd5f424735883661c12edMick Lin        public String getNumber() {
12197850c066b3eccdabecdd5f424735883661c12edMick Lin            return mNumber;
12297850c066b3eccdabecdd5f424735883661c12edMick Lin        }
12397850c066b3eccdabecdd5f424735883661c12edMick Lin        public Drawable getDrawable() {
12497850c066b3eccdabecdd5f424735883661c12edMick Lin            return mDrawable;
12597850c066b3eccdabecdd5f424735883661c12edMick Lin        }
12697850c066b3eccdabecdd5f424735883661c12edMick Lin    }
12797850c066b3eccdabecdd5f424735883661c12edMick Lin}
128