ImageListAdapter.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:4k
源码类别:

android开发

开发平台:

C/C++

  1. /*
  2.  * Copyright (C) 2007-2008 Esmertec AG.
  3.  * Copyright (C) 2007-2008 The Android Open Source Project
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *      http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package com.android.im.app;
  18. import com.android.im.R;
  19. import android.content.Context;
  20. import android.graphics.drawable.Drawable;
  21. import android.view.View;
  22. import android.view.ViewGroup;
  23. import android.view.LayoutInflater;
  24. import android.widget.BaseAdapter;
  25. import android.widget.ImageView;
  26. import android.widget.ListAdapter;
  27. import android.widget.TextView;
  28. import java.util.List;
  29. /**
  30.  * A general image list adapter.
  31.  */
  32. public class ImageListAdapter extends BaseAdapter implements ListAdapter {
  33.     public static interface ImageListItem {
  34.         public Drawable getDrawable();
  35.         public CharSequence getText();
  36.     }
  37.     private final LayoutInflater mInflater;
  38.     private final List<? extends ImageListItem> mData;
  39.     private final int mItemViewId;
  40.     private final int mImageId;
  41.     private final int mTextId;
  42.     private final boolean mAreAllItemsSelectable;
  43.     private final int mSeparatorId;
  44.     public ImageListAdapter(Context context, List<? extends ImageListItem> data) {
  45.         this(context, data, R.layout.imglist_item, R.id.image, R.id.text, R.id.separator);
  46.     }
  47.     public ImageListAdapter(Context context, List<? extends ImageListItem> data,
  48.             int itemViewId, int imgId, int textId, int separatorId) {
  49.         mData = data;
  50.         mItemViewId = itemViewId;
  51.         mImageId = imgId;
  52.         mTextId = textId;
  53.         mAreAllItemsSelectable = !data.contains(null);
  54.         mSeparatorId = separatorId;
  55.         mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  56.     }
  57.     public int getCount() {
  58.         return mData.size();
  59.     }
  60.     public Object getItem(int position) {
  61.         return mData.get(position);
  62.     }
  63.     public long getItemId(int position) {
  64.         return position;
  65.     }
  66.     public View getView(int position, View convertView, ViewGroup parent) {
  67.         View v;
  68.         if (convertView == null) {
  69.             v = mInflater.inflate(mItemViewId, parent, false);
  70.         } else {
  71.             v = convertView;
  72.         }
  73.         setupView(position, v);
  74.         return v;
  75.     }
  76.     private void setupView(int position, View view) {
  77.         ImageView iv = (ImageView) view.findViewById(mImageId);
  78.         TextView tv = (TextView)view.findViewById(mTextId);
  79.         View separator = view.findViewById(mSeparatorId);
  80.         if (!isEnabled(position)) {
  81.             if (iv != null) {
  82.                 iv.setVisibility(View.GONE);
  83.             }
  84.             if (tv != null) {
  85.                 tv.setVisibility(View.GONE);
  86.             }
  87.             if (separator != null) {
  88.                 separator.setVisibility(View.VISIBLE);
  89.             }
  90.         } else {
  91.             if (separator != null) {
  92.                 separator.setVisibility(View.GONE);
  93.             }
  94.             final ImageListItem item = mData.get(position);
  95.             if (iv != null) {
  96.                 iv.setVisibility(View.VISIBLE);
  97.                 iv.setImageDrawable(item.getDrawable());
  98.             }
  99.             if (tv != null) {
  100.                 tv.setVisibility(View.VISIBLE);
  101.                 tv.setText(item.getText());
  102.             }
  103.         }
  104.     }
  105.     @Override
  106.     public boolean areAllItemsEnabled() {
  107.         return mAreAllItemsSelectable;
  108.     }
  109.     @Override
  110.     public boolean isEnabled(int position) {
  111.         return mData.get(position) != null;
  112.     }
  113. }