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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyjgjs.html