Android开发教程:View Tag 的使用
Android开发教程:View Tag 的使用
发现Tag在View中还是很有作用的属性,API中这样描述的:
Tags
Unlike IDs, tags are not used to identify views. Tags are essentially an extra piece of information that can be associated with a view. They are most often used as a convenience to store data related to views in the views themselves rather than by putting them in a separate structure.
Tag不像ID是用标示view的。Tag从本质上来讲是就是相关联的view的额外的信息。它们经常用来存储一些view的数据,这样做非常方便而不用存入另外的单独结构。
下面这个例子是从eoe中看到的,给我很大启发:
[java]- public class FileListAdapter extends BaseAdapter {
- private LayoutInflater mInflater;
- private Bitmap mIcon_folder;
- private Bitmap mIcon_file;
- private Bitmap mIcon_image;
- private Bitmap mIcon_audio;
- private Bitmap mIcon_video;
- private Bitmap mIcon_apk;
- private List<String> items;
- private List<String> paths;
- private List<String> sizes;
- private int isZoom = 0;
- // MyAdapter的构造器
- public FileListAdapter(Context context, List<String> it, List<String> pa,
- List<String> si, int zm) {
- mInflater = LayoutInflater.from(context);
- items = it;
- paths = pa;
- sizes = si;
- isZoom = zm;
- mIcon_folder = BitmapFactory.decodeResource(context.getResources(),
- R.drawable.folder); // 文件夹的图标
- mIcon_file = BitmapFactory.decodeResource(context.getResources(),
- R.drawable.file); // 文件的图文件
- mIcon_image = BitmapFactory.decodeResource(context.getResources(),
- R.drawable.image); // 图片的图文件
- mIcon_audio = BitmapFactory.decodeResource(context.getResources(),
- R.drawable.audio); // 音频的图文件
- mIcon_video = BitmapFactory.decodeResource(context.getResources(),
- R.drawable.video); // 视频的图文件
- mIcon_apk = BitmapFactory.decodeResource(context.getResources(),
- R.drawable.apk); // apk文件
- }
- @Override
- public int getCount() {
- return items.size();
- }
- @Override
- public Object getItem(int position) {
- return items.get(position);
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup par) {
- Bitmap bitMap = null;
- ViewHolder holder = null;
- if (convertView == null) {
- // 使用自定义的list_items作为Layout
- convertView = mInflater.inflate(R.layout.file_list_items, null);
- // 初始化holder的text与icon
- holder = new ViewHolder();
- holder.f_title = ((TextView) convertView.findViewById(R.id.f_title));
- holder.f_text = ((TextView) convertView.findViewById(R.id.f_text));
- holder.f_icon = ((ImageView) convertView.findViewById(R.id.f_icon));
- convertView.setTag(holder);
- } else {
- holder = (ViewHolder) convertView.getTag();
- }
- File f = new File(paths.get(position).toString());
- // 设置文件或文件夹的文字与icon
- holder.f_title.setText(f.getName());
- String f_type = MyUtil.getMIMEType(f, false);
- if (f.isDirectory()) {
- holder.f_icon.setImageBitmap(mIcon_folder);
- holder.f_text.setText("");
- } else {
- holder.f_text.setText(sizes.get(position));
- if ("image".equals(f_type)) {
- if (isZoom == 1) {
- bitMap = MyUtil.fitSizePic(f);
- if (bitMap != null) {
- holder.f_icon.setImageBitmap(bitMap);
- } else {
- holder.f_icon.setImageBitmap(mIcon_image);
- }
- } else {
- holder.f_icon.setImageBitmap(mIcon_image);
- }
- bitMap = null;
- } else if ("audio".equals(f_type)) {
- holder.f_icon.setImageBitmap(mIcon_audio);
- } else if ("video".equals(f_type)) {
- holder.f_icon.setImageBitmap(mIcon_video);
- } else if ("apk".equals(f_type)) {
- holder.f_icon.setImageBitmap(mIcon_apk);
- } else {
- holder.f_icon.setImageBitmap(mIcon_file);
- }
- }
- return convertView;
- }
- /**
- * 不单独写get set可以提高效率 class ViewHolder
- * */
- private class ViewHolder {
- TextView f_title;
- TextView f_text;
- ImageView f_icon;
- }
- }
评论暂时关闭