172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/*
272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 Esmertec AG.
372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *
572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License.
772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at
872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *
972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *
1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and
1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License.
1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */
1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms.ui;
1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
20d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport java.util.List;
21d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chen
2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.Context;
2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.LayoutInflater;
2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.View;
2572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.ViewGroup;
2672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.ArrayAdapter;
2772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.ImageView;
2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.TextView;
2972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport com.android.mms.R;
3172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
3272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/**
3372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * An adapter to store icons.
3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */
3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class IconListAdapter extends ArrayAdapter<IconListAdapter.IconListItem> {
3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    protected LayoutInflater mInflater;
3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private static final int mResource = R.layout.icon_list_item;
38da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen    private ViewHolder mViewHolder;
3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
40da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen    static class ViewHolder {
41da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        private View mView;
42da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        private TextView mTextView;
43da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        private ImageView mImageView;
44da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen
45da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        public ViewHolder(View view) {
46da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen            mView = view;
47da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        }
48da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen
49da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        public TextView getTextView() {
50da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen            if (mTextView == null) {
51da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen                mTextView = (TextView) mView.findViewById(R.id.text1);
52da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen            }
53da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen
54da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen            return mTextView;
55da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        }
56da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen
57da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        public ImageView getImageView() {
58da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen            if (mImageView == null) {
59da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen                mImageView = (ImageView) mView.findViewById(R.id.icon);
60da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen            }
61da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen
62da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen            return mImageView;
63da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        }
64da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen    }
6572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public IconListAdapter(Context context,
6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            List<IconListItem> items) {
6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        super(context, mResource, items);
6872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
6972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
7072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
7172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
7272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public View getView(int position, View convertView, ViewGroup parent) {
7372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        View view;
7472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (convertView == null) {
7572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            view = mInflater.inflate(mResource, parent, false);
76da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen            mViewHolder = new ViewHolder(view);
77da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen            view.setTag(mViewHolder);
7872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        } else {
7972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            view = convertView;
80da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen            mViewHolder = (ViewHolder) view.getTag();
8172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
8272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
8372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Set text field
84da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        TextView text = mViewHolder.getTextView();
8572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        text.setText(getItem(position).getTitle());
8672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
8772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Set resource icon
88da3bbf39e92b43124dd71c7118f8a606ace7f6c9Roger Chen        ImageView image = mViewHolder.getImageView();
8972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        image.setImageResource(getItem(position).getResource());
9072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
9172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        return view;
9272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
9372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
9472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static class IconListItem {
9572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        private final String mTitle;
9672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        private final int mResource;
9772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
9872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public IconListItem(String title, int resource) {
9972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mResource = resource;
10072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mTitle = title;
10172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
10272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
10372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public String getTitle() {
10472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            return mTitle;
10572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
10672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
10772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public int getResource() {
10872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            return mResource;
10972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
11072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
11172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project}
112